// 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: linker -o %t2%exeext  %t1.o %t2.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"
#ifdef __cplusplus
struct __attribute__((packed)) aBFu8s_Ui_BFu0c { unsigned short v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Ui_BFu0i { unsigned short v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Ui_BFu0ll { unsigned short v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Ui_BFu0s { unsigned short v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Ul_BFu0c { unsigned short v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Ul_BFu0i { unsigned short v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Ul_BFu0ll { unsigned short v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Ul_BFu0s { unsigned short v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Us_BFu0c { unsigned short v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Us_BFu0i { unsigned short v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Us_BFu0ll { unsigned short v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Us_BFu0s { unsigned short v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Vp_BFu0c { unsigned short v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Vp_BFu0i { unsigned short v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Vp_BFu0ll { unsigned short v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Vp_BFu0s { unsigned short v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0c { unsigned int v1:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu0c { unsigned int v1:9; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu0i { unsigned int v1:9; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu0ll { unsigned int v1:9; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu0s { unsigned int v1:9; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu15i { unsigned int v1:9; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu15ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu15s { unsigned int v1:9; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu16i { unsigned int v1:9; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu16ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu16s { unsigned int v1:9; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu17i { unsigned int v1:9; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu17ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu1c { unsigned int v1:9; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu1i { unsigned int v1:9; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu1ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu1s { unsigned int v1:9; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu31i { unsigned int v1:9; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu31ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu32i { unsigned int v1:9; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu32ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu33 { unsigned int v1:9; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu7c { unsigned int v1:9; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu7i { unsigned int v1:9; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu7ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu7s { unsigned int v1:9; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu8c { unsigned int v1:9; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu8i { unsigned int v1:9; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu8ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu8s { unsigned int v1:9; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu9i { unsigned int v1:9; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu9ll { unsigned int v1:9; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0c_BFu9s { unsigned int v1:9; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0c_C { unsigned int v1:9; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_D { unsigned int v1:9; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_F { unsigned int v1:9; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_I { unsigned int v1:9; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Ip { unsigned int v1:9; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_L { unsigned int v1:9; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_S { unsigned int v1:9; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Uc { unsigned int v1:9; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Ui { unsigned int v1:9; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Ul { unsigned int v1:9; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Us { unsigned int v1:9; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9i_BFu0c_Vp { unsigned int v1:9; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu9i_BFu0i { unsigned int v1:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu0c { unsigned int v1:9; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu0i { unsigned int v1:9; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu0ll { unsigned int v1:9; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu0s { unsigned int v1:9; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu15i { unsigned int v1:9; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu15ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu15s { unsigned int v1:9; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu16i { unsigned int v1:9; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu16ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu16s { unsigned int v1:9; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu17i { unsigned int v1:9; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu17ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu1c { unsigned int v1:9; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu1i { unsigned int v1:9; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu1ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu1s { unsigned int v1:9; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu31i { unsigned int v1:9; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu31ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu32i { unsigned int v1:9; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu32ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu33 { unsigned int v1:9; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu7c { unsigned int v1:9; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu7i { unsigned int v1:9; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu7ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu7s { unsigned int v1:9; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu8c { unsigned int v1:9; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu8i { unsigned int v1:9; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu8ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu8s { unsigned int v1:9; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu9i { unsigned int v1:9; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu9ll { unsigned int v1:9; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0i_BFu9s { unsigned int v1:9; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0i_C { unsigned int v1:9; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_D { unsigned int v1:9; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_F { unsigned int v1:9; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_I { unsigned int v1:9; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Ip { unsigned int v1:9; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_L { unsigned int v1:9; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_S { unsigned int v1:9; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Uc { unsigned int v1:9; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Ui { unsigned int v1:9; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Ul { unsigned int v1:9; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Us { unsigned int v1:9; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9i_BFu0i_Vp { unsigned int v1:9; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll { unsigned int v1:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu0c { unsigned int v1:9; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu0i { unsigned int v1:9; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu0ll { unsigned int v1:9; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu0s { unsigned int v1:9; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu15i { unsigned int v1:9; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu15ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu15s { unsigned int v1:9; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu16i { unsigned int v1:9; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu16ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu16s { unsigned int v1:9; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu17i { unsigned int v1:9; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu17ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu1c { unsigned int v1:9; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu1i { unsigned int v1:9; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu1ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu1s { unsigned int v1:9; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu31i { unsigned int v1:9; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu31ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu32i { unsigned int v1:9; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu32ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu33 { unsigned int v1:9; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu7c { unsigned int v1:9; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu7i { unsigned int v1:9; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu7ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu7s { unsigned int v1:9; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu8c { unsigned int v1:9; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu8i { unsigned int v1:9; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu8ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu8s { unsigned int v1:9; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu9i { unsigned int v1:9; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu9ll { unsigned int v1:9; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0ll_BFu9s { unsigned int v1:9; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0ll_C { unsigned int v1:9; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_D { unsigned int v1:9; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_F { unsigned int v1:9; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_I { unsigned int v1:9; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Ip { unsigned int v1:9; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_L { unsigned int v1:9; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_S { unsigned int v1:9; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Uc { unsigned int v1:9; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Ui { unsigned int v1:9; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Ul { unsigned int v1:9; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Us { unsigned int v1:9; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9i_BFu0ll_Vp { unsigned int v1:9; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu9i_BFu0s { unsigned int v1:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu0c { unsigned int v1:9; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu0i { unsigned int v1:9; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu0ll { unsigned int v1:9; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu0s { unsigned int v1:9; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu15i { unsigned int v1:9; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu15ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu15s { unsigned int v1:9; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu16i { unsigned int v1:9; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu16ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu16s { unsigned int v1:9; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu17i { unsigned int v1:9; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu17ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu1c { unsigned int v1:9; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu1i { unsigned int v1:9; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu1ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu1s { unsigned int v1:9; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu31i { unsigned int v1:9; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu31ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu32i { unsigned int v1:9; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu32ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu33 { unsigned int v1:9; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu7c { unsigned int v1:9; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu7i { unsigned int v1:9; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu7ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu7s { unsigned int v1:9; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu8c { unsigned int v1:9; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu8i { unsigned int v1:9; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu8ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu8s { unsigned int v1:9; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu9i { unsigned int v1:9; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu9ll { unsigned int v1:9; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0s_BFu9s { unsigned int v1:9; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9i_BFu0s_C { unsigned int v1:9; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_D { unsigned int v1:9; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_F { unsigned int v1:9; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_I { unsigned int v1:9; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Ip { unsigned int v1:9; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_L { unsigned int v1:9; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_S { unsigned int v1:9; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Uc { unsigned int v1:9; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Ui { unsigned int v1:9; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Ul { unsigned int v1:9; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Us { unsigned int v1:9; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9i_BFu0s_Vp { unsigned int v1:9; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu9i_BFu15i_BFu0c { unsigned int v1:9; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu15i_BFu0i { unsigned int v1:9; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu15i_BFu0ll { unsigned int v1:9; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu15i_BFu0s { unsigned int v1:9; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu15ll_BFu0c { unsigned int v1:9; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu15ll_BFu0i { unsigned int v1:9; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu15ll_BFu0ll { unsigned int v1:9; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu15ll_BFu0s { unsigned int v1:9; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu15s_BFu0c { unsigned int v1:9; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu15s_BFu0i { unsigned int v1:9; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu15s_BFu0ll { unsigned int v1:9; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu15s_BFu0s { unsigned int v1:9; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu16i_BFu0c { unsigned int v1:9; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu16i_BFu0i { unsigned int v1:9; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu16i_BFu0ll { unsigned int v1:9; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu16i_BFu0s { unsigned int v1:9; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu16ll_BFu0c { unsigned int v1:9; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu16ll_BFu0i { unsigned int v1:9; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu16ll_BFu0ll { unsigned int v1:9; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu16ll_BFu0s { unsigned int v1:9; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu16s_BFu0c { unsigned int v1:9; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu16s_BFu0i { unsigned int v1:9; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu16s_BFu0ll { unsigned int v1:9; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu16s_BFu0s { unsigned int v1:9; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu17i_BFu0c { unsigned int v1:9; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu17i_BFu0i { unsigned int v1:9; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu17i_BFu0ll { unsigned int v1:9; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu17i_BFu0s { unsigned int v1:9; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu17ll_BFu0c { unsigned int v1:9; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu17ll_BFu0i { unsigned int v1:9; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu17ll_BFu0ll { unsigned int v1:9; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu17ll_BFu0s { unsigned int v1:9; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu1c_BFu0c { unsigned int v1:9; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu1c_BFu0i { unsigned int v1:9; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu1c_BFu0ll { unsigned int v1:9; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu1c_BFu0s { unsigned int v1:9; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu1i_BFu0c { unsigned int v1:9; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu1i_BFu0i { unsigned int v1:9; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu1i_BFu0ll { unsigned int v1:9; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu1i_BFu0s { unsigned int v1:9; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu1ll_BFu0c { unsigned int v1:9; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu1ll_BFu0i { unsigned int v1:9; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu1ll_BFu0ll { unsigned int v1:9; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu1ll_BFu0s { unsigned int v1:9; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu1s_BFu0c { unsigned int v1:9; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu1s_BFu0i { unsigned int v1:9; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu1s_BFu0ll { unsigned int v1:9; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu1s_BFu0s { unsigned int v1:9; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu31i_BFu0c { unsigned int v1:9; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu31i_BFu0i { unsigned int v1:9; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu31i_BFu0ll { unsigned int v1:9; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu31i_BFu0s { unsigned int v1:9; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu31ll_BFu0c { unsigned int v1:9; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu31ll_BFu0i { unsigned int v1:9; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu31ll_BFu0ll { unsigned int v1:9; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu31ll_BFu0s { unsigned int v1:9; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu32i_BFu0c { unsigned int v1:9; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu32i_BFu0i { unsigned int v1:9; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu32i_BFu0ll { unsigned int v1:9; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu32i_BFu0s { unsigned int v1:9; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu32ll_BFu0c { unsigned int v1:9; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu32ll_BFu0i { unsigned int v1:9; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu32ll_BFu0ll { unsigned int v1:9; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu32ll_BFu0s { unsigned int v1:9; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu33_BFu0c { unsigned int v1:9; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu33_BFu0i { unsigned int v1:9; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu33_BFu0ll { unsigned int v1:9; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu33_BFu0s { unsigned int v1:9; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu7c_BFu0c { unsigned int v1:9; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu7c_BFu0i { unsigned int v1:9; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu7c_BFu0ll { unsigned int v1:9; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu7c_BFu0s { unsigned int v1:9; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu7i_BFu0c { unsigned int v1:9; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu7i_BFu0i { unsigned int v1:9; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu7i_BFu0ll { unsigned int v1:9; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu7i_BFu0s { unsigned int v1:9; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu7ll_BFu0c { unsigned int v1:9; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu7ll_BFu0i { unsigned int v1:9; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu7ll_BFu0ll { unsigned int v1:9; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu7ll_BFu0s { unsigned int v1:9; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu7s_BFu0c { unsigned int v1:9; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu7s_BFu0i { unsigned int v1:9; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu7s_BFu0ll { unsigned int v1:9; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu7s_BFu0s { unsigned int v1:9; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu8c_BFu0c { unsigned int v1:9; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu8c_BFu0i { unsigned int v1:9; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu8c_BFu0ll { unsigned int v1:9; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu8c_BFu0s { unsigned int v1:9; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu8i_BFu0c { unsigned int v1:9; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu8i_BFu0i { unsigned int v1:9; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu8i_BFu0ll { unsigned int v1:9; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu8i_BFu0s { unsigned int v1:9; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu8ll_BFu0c { unsigned int v1:9; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu8ll_BFu0i { unsigned int v1:9; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu8ll_BFu0ll { unsigned int v1:9; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu8ll_BFu0s { unsigned int v1:9; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu8s_BFu0c { unsigned int v1:9; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu8s_BFu0i { unsigned int v1:9; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu8s_BFu0ll { unsigned int v1:9; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu8s_BFu0s { unsigned int v1:9; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu9i_BFu0c { unsigned int v1:9; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu9i_BFu0i { unsigned int v1:9; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu9i_BFu0ll { unsigned int v1:9; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu9i_BFu0s { unsigned int v1:9; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu9ll_BFu0c { unsigned int v1:9; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu9ll_BFu0i { unsigned int v1:9; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu9ll_BFu0ll { unsigned int v1:9; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu9ll_BFu0s { unsigned int v1:9; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_BFu9s_BFu0c { unsigned int v1:9; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_BFu9s_BFu0i { unsigned int v1:9; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_BFu9s_BFu0ll { unsigned int v1:9; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_BFu9s_BFu0s { unsigned int v1:9; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_C_BFu0c { unsigned int v1:9; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_C_BFu0i { unsigned int v1:9; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_C_BFu0ll { unsigned int v1:9; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_C_BFu0s { unsigned int v1:9; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_D_BFu0c { unsigned int v1:9; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_D_BFu0i { unsigned int v1:9; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_D_BFu0ll { unsigned int v1:9; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_D_BFu0s { unsigned int v1:9; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_F_BFu0c { unsigned int v1:9; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_F_BFu0i { unsigned int v1:9; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_F_BFu0ll { unsigned int v1:9; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_F_BFu0s { unsigned int v1:9; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_I_BFu0c { unsigned int v1:9; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_I_BFu0i { unsigned int v1:9; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_I_BFu0ll { unsigned int v1:9; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_I_BFu0s { unsigned int v1:9; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Ip_BFu0c { unsigned int v1:9; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Ip_BFu0i { unsigned int v1:9; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Ip_BFu0ll { unsigned int v1:9; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Ip_BFu0s { unsigned int v1:9; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_L_BFu0c { unsigned int v1:9; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_L_BFu0i { unsigned int v1:9; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_L_BFu0ll { unsigned int v1:9; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_L_BFu0s { unsigned int v1:9; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_S_BFu0c { unsigned int v1:9; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_S_BFu0i { unsigned int v1:9; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_S_BFu0ll { unsigned int v1:9; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_S_BFu0s { unsigned int v1:9; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Uc_BFu0c { unsigned int v1:9; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Uc_BFu0i { unsigned int v1:9; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Uc_BFu0ll { unsigned int v1:9; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Uc_BFu0s { unsigned int v1:9; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Ui_BFu0c { unsigned int v1:9; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Ui_BFu0i { unsigned int v1:9; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Ui_BFu0ll { unsigned int v1:9; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Ui_BFu0s { unsigned int v1:9; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Ul_BFu0c { unsigned int v1:9; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Ul_BFu0i { unsigned int v1:9; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Ul_BFu0ll { unsigned int v1:9; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Ul_BFu0s { unsigned int v1:9; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Us_BFu0c { unsigned int v1:9; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Us_BFu0i { unsigned int v1:9; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Us_BFu0ll { unsigned int v1:9; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Us_BFu0s { unsigned int v1:9; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9i_Vp_BFu0c { unsigned int v1:9; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9i_Vp_BFu0i { unsigned int v1:9; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9i_Vp_BFu0ll { unsigned int v1:9; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9i_Vp_BFu0s { unsigned int v1:9; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c { unsigned long long v1:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu0c { unsigned long long v1:9; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu0i { unsigned long long v1:9; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu0ll { unsigned long long v1:9; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu0s { unsigned long long v1:9; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu15i { unsigned long long v1:9; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu15ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu15s { unsigned long long v1:9; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu16i { unsigned long long v1:9; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu16ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu16s { unsigned long long v1:9; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu17i { unsigned long long v1:9; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu17ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu1c { unsigned long long v1:9; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu1i { unsigned long long v1:9; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu1ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu1s { unsigned long long v1:9; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu31i { unsigned long long v1:9; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu31ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu32i { unsigned long long v1:9; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu32ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu33 { unsigned long long v1:9; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu7c { unsigned long long v1:9; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu7i { unsigned long long v1:9; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu7ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu7s { unsigned long long v1:9; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu8c { unsigned long long v1:9; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu8i { unsigned long long v1:9; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu8ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu8s { unsigned long long v1:9; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu9i { unsigned long long v1:9; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu9ll { unsigned long long v1:9; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0c_BFu9s { unsigned long long v1:9; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0c_C { unsigned long long v1:9; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_D { unsigned long long v1:9; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_F { unsigned long long v1:9; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_I { unsigned long long v1:9; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Ip { unsigned long long v1:9; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_L { unsigned long long v1:9; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_S { unsigned long long v1:9; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Uc { unsigned long long v1:9; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Ui { unsigned long long v1:9; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Ul { unsigned long long v1:9; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Us { unsigned long long v1:9; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0c_Vp { unsigned long long v1:9; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i { unsigned long long v1:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu0c { unsigned long long v1:9; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu0i { unsigned long long v1:9; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu0ll { unsigned long long v1:9; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu0s { unsigned long long v1:9; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu15i { unsigned long long v1:9; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu15ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu15s { unsigned long long v1:9; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu16i { unsigned long long v1:9; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu16ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu16s { unsigned long long v1:9; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu17i { unsigned long long v1:9; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu17ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu1c { unsigned long long v1:9; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu1i { unsigned long long v1:9; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu1ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu1s { unsigned long long v1:9; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu31i { unsigned long long v1:9; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu31ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu32i { unsigned long long v1:9; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu32ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu33 { unsigned long long v1:9; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu7c { unsigned long long v1:9; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu7i { unsigned long long v1:9; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu7ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu7s { unsigned long long v1:9; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu8c { unsigned long long v1:9; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu8i { unsigned long long v1:9; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu8ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu8s { unsigned long long v1:9; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu9i { unsigned long long v1:9; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu9ll { unsigned long long v1:9; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0i_BFu9s { unsigned long long v1:9; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0i_C { unsigned long long v1:9; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_D { unsigned long long v1:9; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_F { unsigned long long v1:9; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_I { unsigned long long v1:9; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Ip { unsigned long long v1:9; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_L { unsigned long long v1:9; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_S { unsigned long long v1:9; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Uc { unsigned long long v1:9; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Ui { unsigned long long v1:9; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Ul { unsigned long long v1:9; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Us { unsigned long long v1:9; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0i_Vp { unsigned long long v1:9; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll { unsigned long long v1:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu0c { unsigned long long v1:9; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu0i { unsigned long long v1:9; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu0ll { unsigned long long v1:9; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu0s { unsigned long long v1:9; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu15i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu15ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu15s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu16i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu16ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu16s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu17i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu17ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu1c { unsigned long long v1:9; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu1i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu1ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu1s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu31i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu31ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu32i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu32ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu33 { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu7c { unsigned long long v1:9; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu7i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu7ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu7s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu8c { unsigned long long v1:9; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu8i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu8ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu8s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu9i { unsigned long long v1:9; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu9ll { unsigned long long v1:9; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_BFu9s { unsigned long long v1:9; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_C { unsigned long long v1:9; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_D { unsigned long long v1:9; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_F { unsigned long long v1:9; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_I { unsigned long long v1:9; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Ip { unsigned long long v1:9; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_L { unsigned long long v1:9; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_S { unsigned long long v1:9; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Uc { unsigned long long v1:9; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Ui { unsigned long long v1:9; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Ul { unsigned long long v1:9; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Us { unsigned long long v1:9; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0ll_Vp { unsigned long long v1:9; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s { unsigned long long v1:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu0c { unsigned long long v1:9; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu0i { unsigned long long v1:9; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu0ll { unsigned long long v1:9; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu0s { unsigned long long v1:9; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu15i { unsigned long long v1:9; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu15ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu15s { unsigned long long v1:9; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu16i { unsigned long long v1:9; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu16ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu16s { unsigned long long v1:9; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu17i { unsigned long long v1:9; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu17ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu1c { unsigned long long v1:9; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu1i { unsigned long long v1:9; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu1ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu1s { unsigned long long v1:9; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu31i { unsigned long long v1:9; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu31ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu32i { unsigned long long v1:9; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu32ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu33 { unsigned long long v1:9; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu7c { unsigned long long v1:9; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu7i { unsigned long long v1:9; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu7ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu7s { unsigned long long v1:9; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu8c { unsigned long long v1:9; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu8i { unsigned long long v1:9; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu8ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu8s { unsigned long long v1:9; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu9i { unsigned long long v1:9; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu9ll { unsigned long long v1:9; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0s_BFu9s { unsigned long long v1:9; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9ll_BFu0s_C { unsigned long long v1:9; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_D { unsigned long long v1:9; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_F { unsigned long long v1:9; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_I { unsigned long long v1:9; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Ip { unsigned long long v1:9; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_L { unsigned long long v1:9; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_S { unsigned long long v1:9; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Uc { unsigned long long v1:9; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Ui { unsigned long long v1:9; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Ul { unsigned long long v1:9; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Us { unsigned long long v1:9; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9ll_BFu0s_Vp { unsigned long long v1:9; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu9ll_BFu15i_BFu0c { unsigned long long v1:9; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu15i_BFu0i { unsigned long long v1:9; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu15i_BFu0ll { unsigned long long v1:9; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu15i_BFu0s { unsigned long long v1:9; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu15ll_BFu0c { unsigned long long v1:9; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu15ll_BFu0i { unsigned long long v1:9; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu15ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu15ll_BFu0s { unsigned long long v1:9; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu15s_BFu0c { unsigned long long v1:9; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu15s_BFu0i { unsigned long long v1:9; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu15s_BFu0ll { unsigned long long v1:9; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu15s_BFu0s { unsigned long long v1:9; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu16i_BFu0c { unsigned long long v1:9; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu16i_BFu0i { unsigned long long v1:9; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu16i_BFu0ll { unsigned long long v1:9; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu16i_BFu0s { unsigned long long v1:9; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu16ll_BFu0c { unsigned long long v1:9; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu16ll_BFu0i { unsigned long long v1:9; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu16ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu16ll_BFu0s { unsigned long long v1:9; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu16s_BFu0c { unsigned long long v1:9; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu16s_BFu0i { unsigned long long v1:9; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu16s_BFu0ll { unsigned long long v1:9; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu16s_BFu0s { unsigned long long v1:9; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu17i_BFu0c { unsigned long long v1:9; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu17i_BFu0i { unsigned long long v1:9; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu17i_BFu0ll { unsigned long long v1:9; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu17i_BFu0s { unsigned long long v1:9; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu17ll_BFu0c { unsigned long long v1:9; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu17ll_BFu0i { unsigned long long v1:9; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu17ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu17ll_BFu0s { unsigned long long v1:9; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu1c_BFu0c { unsigned long long v1:9; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu1c_BFu0i { unsigned long long v1:9; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu1c_BFu0ll { unsigned long long v1:9; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu1c_BFu0s { unsigned long long v1:9; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu1i_BFu0c { unsigned long long v1:9; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu1i_BFu0i { unsigned long long v1:9; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu1i_BFu0ll { unsigned long long v1:9; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu1i_BFu0s { unsigned long long v1:9; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu1ll_BFu0c { unsigned long long v1:9; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu1ll_BFu0i { unsigned long long v1:9; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu1ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu1ll_BFu0s { unsigned long long v1:9; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu1s_BFu0c { unsigned long long v1:9; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu1s_BFu0i { unsigned long long v1:9; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu1s_BFu0ll { unsigned long long v1:9; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu1s_BFu0s { unsigned long long v1:9; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu31i_BFu0c { unsigned long long v1:9; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu31i_BFu0i { unsigned long long v1:9; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu31i_BFu0ll { unsigned long long v1:9; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu31i_BFu0s { unsigned long long v1:9; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu31ll_BFu0c { unsigned long long v1:9; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu31ll_BFu0i { unsigned long long v1:9; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu31ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu31ll_BFu0s { unsigned long long v1:9; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu32i_BFu0c { unsigned long long v1:9; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu32i_BFu0i { unsigned long long v1:9; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu32i_BFu0ll { unsigned long long v1:9; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu32i_BFu0s { unsigned long long v1:9; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu32ll_BFu0c { unsigned long long v1:9; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu32ll_BFu0i { unsigned long long v1:9; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu32ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu32ll_BFu0s { unsigned long long v1:9; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu33_BFu0c { unsigned long long v1:9; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu33_BFu0i { unsigned long long v1:9; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu33_BFu0ll { unsigned long long v1:9; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu33_BFu0s { unsigned long long v1:9; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu7c_BFu0c { unsigned long long v1:9; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu7c_BFu0i { unsigned long long v1:9; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu7c_BFu0ll { unsigned long long v1:9; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu7c_BFu0s { unsigned long long v1:9; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu7i_BFu0c { unsigned long long v1:9; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu7i_BFu0i { unsigned long long v1:9; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu7i_BFu0ll { unsigned long long v1:9; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu7i_BFu0s { unsigned long long v1:9; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu7ll_BFu0c { unsigned long long v1:9; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu7ll_BFu0i { unsigned long long v1:9; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu7ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu7ll_BFu0s { unsigned long long v1:9; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu7s_BFu0c { unsigned long long v1:9; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu7s_BFu0i { unsigned long long v1:9; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu7s_BFu0ll { unsigned long long v1:9; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu7s_BFu0s { unsigned long long v1:9; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu8c_BFu0c { unsigned long long v1:9; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu8c_BFu0i { unsigned long long v1:9; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu8c_BFu0ll { unsigned long long v1:9; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu8c_BFu0s { unsigned long long v1:9; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu8i_BFu0c { unsigned long long v1:9; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu8i_BFu0i { unsigned long long v1:9; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu8i_BFu0ll { unsigned long long v1:9; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu8i_BFu0s { unsigned long long v1:9; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu8ll_BFu0c { unsigned long long v1:9; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu8ll_BFu0i { unsigned long long v1:9; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu8ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu8ll_BFu0s { unsigned long long v1:9; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu8s_BFu0c { unsigned long long v1:9; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu8s_BFu0i { unsigned long long v1:9; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu8s_BFu0ll { unsigned long long v1:9; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu8s_BFu0s { unsigned long long v1:9; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu9i_BFu0c { unsigned long long v1:9; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu9i_BFu0i { unsigned long long v1:9; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu9i_BFu0ll { unsigned long long v1:9; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu9i_BFu0s { unsigned long long v1:9; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu9ll_BFu0c { unsigned long long v1:9; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu9ll_BFu0i { unsigned long long v1:9; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu9ll_BFu0ll { unsigned long long v1:9; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu9ll_BFu0s { unsigned long long v1:9; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_BFu9s_BFu0c { unsigned long long v1:9; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_BFu9s_BFu0i { unsigned long long v1:9; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_BFu9s_BFu0ll { unsigned long long v1:9; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_BFu9s_BFu0s { unsigned long long v1:9; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_C_BFu0c { unsigned long long v1:9; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_C_BFu0i { unsigned long long v1:9; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_C_BFu0ll { unsigned long long v1:9; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_C_BFu0s { unsigned long long v1:9; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_D_BFu0c { unsigned long long v1:9; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_D_BFu0i { unsigned long long v1:9; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_D_BFu0ll { unsigned long long v1:9; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_D_BFu0s { unsigned long long v1:9; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_F_BFu0c { unsigned long long v1:9; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_F_BFu0i { unsigned long long v1:9; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_F_BFu0ll { unsigned long long v1:9; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_F_BFu0s { unsigned long long v1:9; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_I_BFu0c { unsigned long long v1:9; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_I_BFu0i { unsigned long long v1:9; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_I_BFu0ll { unsigned long long v1:9; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_I_BFu0s { unsigned long long v1:9; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Ip_BFu0c { unsigned long long v1:9; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Ip_BFu0i { unsigned long long v1:9; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Ip_BFu0ll { unsigned long long v1:9; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Ip_BFu0s { unsigned long long v1:9; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_L_BFu0c { unsigned long long v1:9; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_L_BFu0i { unsigned long long v1:9; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_L_BFu0ll { unsigned long long v1:9; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_L_BFu0s { unsigned long long v1:9; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_S_BFu0c { unsigned long long v1:9; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_S_BFu0i { unsigned long long v1:9; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_S_BFu0ll { unsigned long long v1:9; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_S_BFu0s { unsigned long long v1:9; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Uc_BFu0c { unsigned long long v1:9; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Uc_BFu0i { unsigned long long v1:9; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Uc_BFu0ll { unsigned long long v1:9; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Uc_BFu0s { unsigned long long v1:9; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Ui_BFu0c { unsigned long long v1:9; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Ui_BFu0i { unsigned long long v1:9; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Ui_BFu0ll { unsigned long long v1:9; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Ui_BFu0s { unsigned long long v1:9; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Ul_BFu0c { unsigned long long v1:9; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Ul_BFu0i { unsigned long long v1:9; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Ul_BFu0ll { unsigned long long v1:9; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Ul_BFu0s { unsigned long long v1:9; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Us_BFu0c { unsigned long long v1:9; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Us_BFu0i { unsigned long long v1:9; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Us_BFu0ll { unsigned long long v1:9; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Us_BFu0s { unsigned long long v1:9; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9ll_Vp_BFu0c { unsigned long long v1:9; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9ll_Vp_BFu0i { unsigned long long v1:9; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9ll_Vp_BFu0ll { unsigned long long v1:9; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9ll_Vp_BFu0s { unsigned long long v1:9; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0c { unsigned short v1:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu0c { unsigned short v1:9; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu0i { unsigned short v1:9; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu0ll { unsigned short v1:9; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu0s { unsigned short v1:9; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu15i { unsigned short v1:9; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu15ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu15s { unsigned short v1:9; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu16i { unsigned short v1:9; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu16ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu16s { unsigned short v1:9; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu17i { unsigned short v1:9; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu17ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu1c { unsigned short v1:9; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu1i { unsigned short v1:9; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu1ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu1s { unsigned short v1:9; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu31i { unsigned short v1:9; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu31ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu32i { unsigned short v1:9; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu32ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu33 { unsigned short v1:9; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu7c { unsigned short v1:9; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu7i { unsigned short v1:9; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu7ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu7s { unsigned short v1:9; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu8c { unsigned short v1:9; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu8i { unsigned short v1:9; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu8ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu8s { unsigned short v1:9; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu9i { unsigned short v1:9; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu9ll { unsigned short v1:9; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0c_BFu9s { unsigned short v1:9; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0c_C { unsigned short v1:9; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_D { unsigned short v1:9; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_F { unsigned short v1:9; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_I { unsigned short v1:9; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Ip { unsigned short v1:9; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_L { unsigned short v1:9; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_S { unsigned short v1:9; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Uc { unsigned short v1:9; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Ui { unsigned short v1:9; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Ul { unsigned short v1:9; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Us { unsigned short v1:9; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9s_BFu0c_Vp { unsigned short v1:9; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu9s_BFu0i { unsigned short v1:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu0c { unsigned short v1:9; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu0i { unsigned short v1:9; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu0ll { unsigned short v1:9; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu0s { unsigned short v1:9; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu15i { unsigned short v1:9; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu15ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu15s { unsigned short v1:9; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu16i { unsigned short v1:9; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu16ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu16s { unsigned short v1:9; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu17i { unsigned short v1:9; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu17ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu1c { unsigned short v1:9; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu1i { unsigned short v1:9; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu1ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu1s { unsigned short v1:9; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu31i { unsigned short v1:9; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu31ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu32i { unsigned short v1:9; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu32ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu33 { unsigned short v1:9; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu7c { unsigned short v1:9; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu7i { unsigned short v1:9; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu7ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu7s { unsigned short v1:9; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu8c { unsigned short v1:9; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu8i { unsigned short v1:9; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu8ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu8s { unsigned short v1:9; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu9i { unsigned short v1:9; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu9ll { unsigned short v1:9; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0i_BFu9s { unsigned short v1:9; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0i_C { unsigned short v1:9; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_D { unsigned short v1:9; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_F { unsigned short v1:9; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_I { unsigned short v1:9; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Ip { unsigned short v1:9; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_L { unsigned short v1:9; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_S { unsigned short v1:9; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Uc { unsigned short v1:9; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Ui { unsigned short v1:9; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Ul { unsigned short v1:9; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Us { unsigned short v1:9; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9s_BFu0i_Vp { unsigned short v1:9; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll { unsigned short v1:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu0c { unsigned short v1:9; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu0i { unsigned short v1:9; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu0ll { unsigned short v1:9; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu0s { unsigned short v1:9; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu15i { unsigned short v1:9; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu15ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu15s { unsigned short v1:9; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu16i { unsigned short v1:9; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu16ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu16s { unsigned short v1:9; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu17i { unsigned short v1:9; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu17ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu1c { unsigned short v1:9; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu1i { unsigned short v1:9; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu1ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu1s { unsigned short v1:9; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu31i { unsigned short v1:9; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu31ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu32i { unsigned short v1:9; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu32ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu33 { unsigned short v1:9; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu7c { unsigned short v1:9; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu7i { unsigned short v1:9; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu7ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu7s { unsigned short v1:9; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu8c { unsigned short v1:9; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu8i { unsigned short v1:9; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu8ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu8s { unsigned short v1:9; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu9i { unsigned short v1:9; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu9ll { unsigned short v1:9; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0ll_BFu9s { unsigned short v1:9; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0ll_C { unsigned short v1:9; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_D { unsigned short v1:9; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_F { unsigned short v1:9; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_I { unsigned short v1:9; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Ip { unsigned short v1:9; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_L { unsigned short v1:9; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_S { unsigned short v1:9; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Uc { unsigned short v1:9; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Ui { unsigned short v1:9; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Ul { unsigned short v1:9; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Us { unsigned short v1:9; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9s_BFu0ll_Vp { unsigned short v1:9; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu9s_BFu0s { unsigned short v1:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu0c { unsigned short v1:9; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu0i { unsigned short v1:9; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu0ll { unsigned short v1:9; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu0s { unsigned short v1:9; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu15i { unsigned short v1:9; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu15ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu15s { unsigned short v1:9; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu16i { unsigned short v1:9; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu16ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu16s { unsigned short v1:9; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu17i { unsigned short v1:9; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu17ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu1c { unsigned short v1:9; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu1i { unsigned short v1:9; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu1ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu1s { unsigned short v1:9; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu31i { unsigned short v1:9; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu31ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu32i { unsigned short v1:9; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu32ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu33 { unsigned short v1:9; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu7c { unsigned short v1:9; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu7i { unsigned short v1:9; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu7ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu7s { unsigned short v1:9; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu8c { unsigned short v1:9; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu8i { unsigned short v1:9; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu8ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu8s { unsigned short v1:9; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu9i { unsigned short v1:9; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu9ll { unsigned short v1:9; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0s_BFu9s { unsigned short v1:9; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu9s_BFu0s_C { unsigned short v1:9; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_D { unsigned short v1:9; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_F { unsigned short v1:9; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_I { unsigned short v1:9; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Ip { unsigned short v1:9; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_L { unsigned short v1:9; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_S { unsigned short v1:9; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Uc { unsigned short v1:9; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Ui { unsigned short v1:9; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Ul { unsigned short v1:9; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Us { unsigned short v1:9; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu9s_BFu0s_Vp { unsigned short v1:9; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu9s_BFu15i_BFu0c { unsigned short v1:9; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu15i_BFu0i { unsigned short v1:9; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu15i_BFu0ll { unsigned short v1:9; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu15i_BFu0s { unsigned short v1:9; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu15ll_BFu0c { unsigned short v1:9; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu15ll_BFu0i { unsigned short v1:9; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu15ll_BFu0ll { unsigned short v1:9; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu15ll_BFu0s { unsigned short v1:9; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu15s_BFu0c { unsigned short v1:9; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu15s_BFu0i { unsigned short v1:9; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu15s_BFu0ll { unsigned short v1:9; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu15s_BFu0s { unsigned short v1:9; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu16i_BFu0c { unsigned short v1:9; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu16i_BFu0i { unsigned short v1:9; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu16i_BFu0ll { unsigned short v1:9; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu16i_BFu0s { unsigned short v1:9; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu16ll_BFu0c { unsigned short v1:9; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu16ll_BFu0i { unsigned short v1:9; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu16ll_BFu0ll { unsigned short v1:9; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu16ll_BFu0s { unsigned short v1:9; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu16s_BFu0c { unsigned short v1:9; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu16s_BFu0i { unsigned short v1:9; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu16s_BFu0ll { unsigned short v1:9; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu16s_BFu0s { unsigned short v1:9; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu17i_BFu0c { unsigned short v1:9; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu17i_BFu0i { unsigned short v1:9; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu17i_BFu0ll { unsigned short v1:9; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu17i_BFu0s { unsigned short v1:9; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu17ll_BFu0c { unsigned short v1:9; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu17ll_BFu0i { unsigned short v1:9; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu17ll_BFu0ll { unsigned short v1:9; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu17ll_BFu0s { unsigned short v1:9; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu1c_BFu0c { unsigned short v1:9; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu1c_BFu0i { unsigned short v1:9; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu1c_BFu0ll { unsigned short v1:9; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu1c_BFu0s { unsigned short v1:9; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu1i_BFu0c { unsigned short v1:9; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu1i_BFu0i { unsigned short v1:9; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu1i_BFu0ll { unsigned short v1:9; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu1i_BFu0s { unsigned short v1:9; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu1ll_BFu0c { unsigned short v1:9; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu1ll_BFu0i { unsigned short v1:9; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu1ll_BFu0ll { unsigned short v1:9; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu1ll_BFu0s { unsigned short v1:9; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu1s_BFu0c { unsigned short v1:9; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu1s_BFu0i { unsigned short v1:9; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu1s_BFu0ll { unsigned short v1:9; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu1s_BFu0s { unsigned short v1:9; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu31i_BFu0c { unsigned short v1:9; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu31i_BFu0i { unsigned short v1:9; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu31i_BFu0ll { unsigned short v1:9; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu31i_BFu0s { unsigned short v1:9; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu31ll_BFu0c { unsigned short v1:9; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu31ll_BFu0i { unsigned short v1:9; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu31ll_BFu0ll { unsigned short v1:9; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu31ll_BFu0s { unsigned short v1:9; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu32i_BFu0c { unsigned short v1:9; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu32i_BFu0i { unsigned short v1:9; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu32i_BFu0ll { unsigned short v1:9; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu32i_BFu0s { unsigned short v1:9; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu32ll_BFu0c { unsigned short v1:9; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu32ll_BFu0i { unsigned short v1:9; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu32ll_BFu0ll { unsigned short v1:9; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu32ll_BFu0s { unsigned short v1:9; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu33_BFu0c { unsigned short v1:9; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu33_BFu0i { unsigned short v1:9; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu33_BFu0ll { unsigned short v1:9; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu33_BFu0s { unsigned short v1:9; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu7c_BFu0c { unsigned short v1:9; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu7c_BFu0i { unsigned short v1:9; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu7c_BFu0ll { unsigned short v1:9; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu7c_BFu0s { unsigned short v1:9; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu7i_BFu0c { unsigned short v1:9; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu7i_BFu0i { unsigned short v1:9; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu7i_BFu0ll { unsigned short v1:9; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu7i_BFu0s { unsigned short v1:9; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu7ll_BFu0c { unsigned short v1:9; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu7ll_BFu0i { unsigned short v1:9; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu7ll_BFu0ll { unsigned short v1:9; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu7ll_BFu0s { unsigned short v1:9; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu7s_BFu0c { unsigned short v1:9; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu7s_BFu0i { unsigned short v1:9; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu7s_BFu0ll { unsigned short v1:9; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu7s_BFu0s { unsigned short v1:9; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu8c_BFu0c { unsigned short v1:9; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu8c_BFu0i { unsigned short v1:9; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu8c_BFu0ll { unsigned short v1:9; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu8c_BFu0s { unsigned short v1:9; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu8i_BFu0c { unsigned short v1:9; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu8i_BFu0i { unsigned short v1:9; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu8i_BFu0ll { unsigned short v1:9; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu8i_BFu0s { unsigned short v1:9; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu8ll_BFu0c { unsigned short v1:9; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu8ll_BFu0i { unsigned short v1:9; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu8ll_BFu0ll { unsigned short v1:9; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu8ll_BFu0s { unsigned short v1:9; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu8s_BFu0c { unsigned short v1:9; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu8s_BFu0i { unsigned short v1:9; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu8s_BFu0ll { unsigned short v1:9; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu8s_BFu0s { unsigned short v1:9; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu9i_BFu0c { unsigned short v1:9; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu9i_BFu0i { unsigned short v1:9; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu9i_BFu0ll { unsigned short v1:9; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu9i_BFu0s { unsigned short v1:9; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu9ll_BFu0c { unsigned short v1:9; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu9ll_BFu0i { unsigned short v1:9; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu9ll_BFu0ll { unsigned short v1:9; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu9ll_BFu0s { unsigned short v1:9; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_BFu9s_BFu0c { unsigned short v1:9; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_BFu9s_BFu0i { unsigned short v1:9; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_BFu9s_BFu0ll { unsigned short v1:9; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_BFu9s_BFu0s { unsigned short v1:9; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_C_BFu0c { unsigned short v1:9; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_C_BFu0i { unsigned short v1:9; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_C_BFu0ll { unsigned short v1:9; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_C_BFu0s { unsigned short v1:9; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_D_BFu0c { unsigned short v1:9; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_D_BFu0i { unsigned short v1:9; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_D_BFu0ll { unsigned short v1:9; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_D_BFu0s { unsigned short v1:9; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_F_BFu0c { unsigned short v1:9; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_F_BFu0i { unsigned short v1:9; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_F_BFu0ll { unsigned short v1:9; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_F_BFu0s { unsigned short v1:9; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_I_BFu0c { unsigned short v1:9; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_I_BFu0i { unsigned short v1:9; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_I_BFu0ll { unsigned short v1:9; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_I_BFu0s { unsigned short v1:9; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Ip_BFu0c { unsigned short v1:9; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Ip_BFu0i { unsigned short v1:9; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Ip_BFu0ll { unsigned short v1:9; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Ip_BFu0s { unsigned short v1:9; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_L_BFu0c { unsigned short v1:9; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_L_BFu0i { unsigned short v1:9; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_L_BFu0ll { unsigned short v1:9; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_L_BFu0s { unsigned short v1:9; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_S_BFu0c { unsigned short v1:9; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_S_BFu0i { unsigned short v1:9; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_S_BFu0ll { unsigned short v1:9; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_S_BFu0s { unsigned short v1:9; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Uc_BFu0c { unsigned short v1:9; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Uc_BFu0i { unsigned short v1:9; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Uc_BFu0ll { unsigned short v1:9; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Uc_BFu0s { unsigned short v1:9; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Ui_BFu0c { unsigned short v1:9; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Ui_BFu0i { unsigned short v1:9; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Ui_BFu0ll { unsigned short v1:9; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Ui_BFu0s { unsigned short v1:9; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Ul_BFu0c { unsigned short v1:9; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Ul_BFu0i { unsigned short v1:9; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Ul_BFu0ll { unsigned short v1:9; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Ul_BFu0s { unsigned short v1:9; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Us_BFu0c { unsigned short v1:9; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Us_BFu0i { unsigned short v1:9; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Us_BFu0ll { unsigned short v1:9; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Us_BFu0s { unsigned short v1:9; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu9s_Vp_BFu0c { unsigned short v1:9; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu9s_Vp_BFu0i { unsigned short v1:9; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu9s_Vp_BFu0ll { unsigned short v1:9; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu9s_Vp_BFu0s { unsigned short v1:9; void * v2; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0c { char v1; unsigned char :0; };
struct __attribute__((packed)) aC_BFu0c_BFu0c { char v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aC_BFu0c_BFu0i { char v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aC_BFu0c_BFu0ll { char v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu0c_BFu0s { char v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0c_BFu15i { char v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aC_BFu0c_BFu15ll { char v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aC_BFu0c_BFu15s { char v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aC_BFu0c_BFu16i { char v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aC_BFu0c_BFu16ll { char v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aC_BFu0c_BFu16s { char v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aC_BFu0c_BFu17i { char v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aC_BFu0c_BFu17ll { char v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aC_BFu0c_BFu1c { char v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aC_BFu0c_BFu1i { char v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aC_BFu0c_BFu1ll { char v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aC_BFu0c_BFu1s { char v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aC_BFu0c_BFu31i { char v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aC_BFu0c_BFu31ll { char v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aC_BFu0c_BFu32i { char v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aC_BFu0c_BFu32ll { char v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aC_BFu0c_BFu33 { char v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aC_BFu0c_BFu7c { char v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aC_BFu0c_BFu7i { char v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aC_BFu0c_BFu7ll { char v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aC_BFu0c_BFu7s { char v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aC_BFu0c_BFu8c { char v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aC_BFu0c_BFu8i { char v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aC_BFu0c_BFu8ll { char v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aC_BFu0c_BFu8s { char v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aC_BFu0c_BFu9i { char v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aC_BFu0c_BFu9ll { char v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aC_BFu0c_BFu9s { char v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aC_BFu0c_C { char v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aC_BFu0c_D { char v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aC_BFu0c_F { char v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aC_BFu0c_I { char v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aC_BFu0c_Ip { char v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aC_BFu0c_L { char v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aC_BFu0c_S { char v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aC_BFu0c_Uc { char v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aC_BFu0c_Ui { char v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aC_BFu0c_Ul { char v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aC_BFu0c_Us { char v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aC_BFu0c_Vp { char v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aC_BFu0i { char v1; unsigned int :0; };
struct __attribute__((packed)) aC_BFu0i_BFu0c { char v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aC_BFu0i_BFu0i { char v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aC_BFu0i_BFu0ll { char v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu0i_BFu0s { char v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0i_BFu15i { char v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aC_BFu0i_BFu15ll { char v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aC_BFu0i_BFu15s { char v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aC_BFu0i_BFu16i { char v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aC_BFu0i_BFu16ll { char v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aC_BFu0i_BFu16s { char v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aC_BFu0i_BFu17i { char v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aC_BFu0i_BFu17ll { char v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aC_BFu0i_BFu1c { char v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aC_BFu0i_BFu1i { char v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aC_BFu0i_BFu1ll { char v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aC_BFu0i_BFu1s { char v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aC_BFu0i_BFu31i { char v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aC_BFu0i_BFu31ll { char v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aC_BFu0i_BFu32i { char v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aC_BFu0i_BFu32ll { char v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aC_BFu0i_BFu33 { char v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aC_BFu0i_BFu7c { char v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aC_BFu0i_BFu7i { char v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aC_BFu0i_BFu7ll { char v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aC_BFu0i_BFu7s { char v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aC_BFu0i_BFu8c { char v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aC_BFu0i_BFu8i { char v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aC_BFu0i_BFu8ll { char v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aC_BFu0i_BFu8s { char v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aC_BFu0i_BFu9i { char v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aC_BFu0i_BFu9ll { char v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aC_BFu0i_BFu9s { char v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aC_BFu0i_C { char v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aC_BFu0i_D { char v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aC_BFu0i_F { char v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aC_BFu0i_I { char v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aC_BFu0i_Ip { char v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aC_BFu0i_L { char v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aC_BFu0i_S { char v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aC_BFu0i_Uc { char v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aC_BFu0i_Ui { char v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aC_BFu0i_Ul { char v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aC_BFu0i_Us { char v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aC_BFu0i_Vp { char v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aC_BFu0ll { char v1; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu0ll_BFu0c { char v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aC_BFu0ll_BFu0i { char v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aC_BFu0ll_BFu0ll { char v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu0ll_BFu0s { char v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0ll_BFu15i { char v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aC_BFu0ll_BFu15ll { char v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aC_BFu0ll_BFu15s { char v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aC_BFu0ll_BFu16i { char v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aC_BFu0ll_BFu16ll { char v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aC_BFu0ll_BFu16s { char v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aC_BFu0ll_BFu17i { char v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aC_BFu0ll_BFu17ll { char v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aC_BFu0ll_BFu1c { char v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aC_BFu0ll_BFu1i { char v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aC_BFu0ll_BFu1ll { char v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aC_BFu0ll_BFu1s { char v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aC_BFu0ll_BFu31i { char v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aC_BFu0ll_BFu31ll { char v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aC_BFu0ll_BFu32i { char v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aC_BFu0ll_BFu32ll { char v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aC_BFu0ll_BFu33 { char v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aC_BFu0ll_BFu7c { char v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aC_BFu0ll_BFu7i { char v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aC_BFu0ll_BFu7ll { char v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aC_BFu0ll_BFu7s { char v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aC_BFu0ll_BFu8c { char v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aC_BFu0ll_BFu8i { char v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aC_BFu0ll_BFu8ll { char v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aC_BFu0ll_BFu8s { char v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aC_BFu0ll_BFu9i { char v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aC_BFu0ll_BFu9ll { char v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aC_BFu0ll_BFu9s { char v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aC_BFu0ll_C { char v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aC_BFu0ll_D { char v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aC_BFu0ll_F { char v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aC_BFu0ll_I { char v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aC_BFu0ll_Ip { char v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aC_BFu0ll_L { char v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aC_BFu0ll_S { char v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aC_BFu0ll_Uc { char v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aC_BFu0ll_Ui { char v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aC_BFu0ll_Ul { char v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aC_BFu0ll_Us { char v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aC_BFu0ll_Vp { char v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aC_BFu0s { char v1; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0s_BFu0c { char v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aC_BFu0s_BFu0i { char v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aC_BFu0s_BFu0ll { char v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu0s_BFu0s { char v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aC_BFu0s_BFu15i { char v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aC_BFu0s_BFu15ll { char v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aC_BFu0s_BFu15s { char v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aC_BFu0s_BFu16i { char v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aC_BFu0s_BFu16ll { char v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aC_BFu0s_BFu16s { char v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aC_BFu0s_BFu17i { char v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aC_BFu0s_BFu17ll { char v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aC_BFu0s_BFu1c { char v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aC_BFu0s_BFu1i { char v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aC_BFu0s_BFu1ll { char v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aC_BFu0s_BFu1s { char v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aC_BFu0s_BFu31i { char v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aC_BFu0s_BFu31ll { char v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aC_BFu0s_BFu32i { char v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aC_BFu0s_BFu32ll { char v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aC_BFu0s_BFu33 { char v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aC_BFu0s_BFu7c { char v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aC_BFu0s_BFu7i { char v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aC_BFu0s_BFu7ll { char v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aC_BFu0s_BFu7s { char v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aC_BFu0s_BFu8c { char v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aC_BFu0s_BFu8i { char v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aC_BFu0s_BFu8ll { char v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aC_BFu0s_BFu8s { char v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aC_BFu0s_BFu9i { char v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aC_BFu0s_BFu9ll { char v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aC_BFu0s_BFu9s { char v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aC_BFu0s_C { char v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aC_BFu0s_D { char v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aC_BFu0s_F { char v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aC_BFu0s_I { char v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aC_BFu0s_Ip { char v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aC_BFu0s_L { char v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aC_BFu0s_S { char v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aC_BFu0s_Uc { char v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aC_BFu0s_Ui { char v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aC_BFu0s_Ul { char v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aC_BFu0s_Us { char v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aC_BFu0s_Vp { char v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aC_BFu15i_BFu0c { char v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aC_BFu15i_BFu0i { char v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aC_BFu15i_BFu0ll { char v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu15i_BFu0s { char v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aC_BFu15ll_BFu0c { char v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aC_BFu15ll_BFu0i { char v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aC_BFu15ll_BFu0ll { char v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu15ll_BFu0s { char v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aC_BFu15s_BFu0c { char v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aC_BFu15s_BFu0i { char v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aC_BFu15s_BFu0ll { char v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu15s_BFu0s { char v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aC_BFu16i_BFu0c { char v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aC_BFu16i_BFu0i { char v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aC_BFu16i_BFu0ll { char v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu16i_BFu0s { char v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aC_BFu16ll_BFu0c { char v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aC_BFu16ll_BFu0i { char v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aC_BFu16ll_BFu0ll { char v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu16ll_BFu0s { char v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aC_BFu16s_BFu0c { char v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aC_BFu16s_BFu0i { char v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aC_BFu16s_BFu0ll { char v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu16s_BFu0s { char v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aC_BFu17i_BFu0c { char v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aC_BFu17i_BFu0i { char v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aC_BFu17i_BFu0ll { char v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu17i_BFu0s { char v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aC_BFu17ll_BFu0c { char v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aC_BFu17ll_BFu0i { char v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aC_BFu17ll_BFu0ll { char v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu17ll_BFu0s { char v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aC_BFu1c_BFu0c { char v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aC_BFu1c_BFu0i { char v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aC_BFu1c_BFu0ll { char v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu1c_BFu0s { char v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aC_BFu1i_BFu0c { char v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aC_BFu1i_BFu0i { char v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aC_BFu1i_BFu0ll { char v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu1i_BFu0s { char v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aC_BFu1ll_BFu0c { char v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aC_BFu1ll_BFu0i { char v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aC_BFu1ll_BFu0ll { char v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu1ll_BFu0s { char v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aC_BFu1s_BFu0c { char v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aC_BFu1s_BFu0i { char v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aC_BFu1s_BFu0ll { char v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu1s_BFu0s { char v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aC_BFu31i_BFu0c { char v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aC_BFu31i_BFu0i { char v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aC_BFu31i_BFu0ll { char v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu31i_BFu0s { char v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aC_BFu31ll_BFu0c { char v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aC_BFu31ll_BFu0i { char v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aC_BFu31ll_BFu0ll { char v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu31ll_BFu0s { char v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aC_BFu32i_BFu0c { char v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aC_BFu32i_BFu0i { char v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aC_BFu32i_BFu0ll { char v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu32i_BFu0s { char v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aC_BFu32ll_BFu0c { char v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aC_BFu32ll_BFu0i { char v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aC_BFu32ll_BFu0ll { char v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu32ll_BFu0s { char v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aC_BFu33_BFu0c { char v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aC_BFu33_BFu0i { char v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aC_BFu33_BFu0ll { char v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu33_BFu0s { char v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aC_BFu7c_BFu0c { char v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aC_BFu7c_BFu0i { char v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aC_BFu7c_BFu0ll { char v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu7c_BFu0s { char v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aC_BFu7i_BFu0c { char v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aC_BFu7i_BFu0i { char v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aC_BFu7i_BFu0ll { char v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu7i_BFu0s { char v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aC_BFu7ll_BFu0c { char v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aC_BFu7ll_BFu0i { char v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aC_BFu7ll_BFu0ll { char v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu7ll_BFu0s { char v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aC_BFu7s_BFu0c { char v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aC_BFu7s_BFu0i { char v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aC_BFu7s_BFu0ll { char v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu7s_BFu0s { char v1; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aC_BFu8c_BFu0c { char v1; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aC_BFu8c_BFu0i { char v1; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aC_BFu8c_BFu0ll { char v1; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu8c_BFu0s { char v1; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aC_BFu8i_BFu0c { char v1; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aC_BFu8i_BFu0i { char v1; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aC_BFu8i_BFu0ll { char v1; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu8i_BFu0s { char v1; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aC_BFu8ll_BFu0c { char v1; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aC_BFu8ll_BFu0i { char v1; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aC_BFu8ll_BFu0ll { char v1; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu8ll_BFu0s { char v1; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aC_BFu8s_BFu0c { char v1; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aC_BFu8s_BFu0i { char v1; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aC_BFu8s_BFu0ll { char v1; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu8s_BFu0s { char v1; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aC_BFu9i_BFu0c { char v1; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aC_BFu9i_BFu0i { char v1; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aC_BFu9i_BFu0ll { char v1; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu9i_BFu0s { char v1; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aC_BFu9ll_BFu0c { char v1; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aC_BFu9ll_BFu0i { char v1; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aC_BFu9ll_BFu0ll { char v1; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu9ll_BFu0s { char v1; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aC_BFu9s_BFu0c { char v1; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aC_BFu9s_BFu0i { char v1; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aC_BFu9s_BFu0ll { char v1; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aC_BFu9s_BFu0s { char v1; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aC_C_BFu0c { char v1; char v2; unsigned char :0; };
struct __attribute__((packed)) aC_C_BFu0i { char v1; char v2; unsigned int :0; };
struct __attribute__((packed)) aC_C_BFu0ll { char v1; char v2; unsigned long long :0; };
struct __attribute__((packed)) aC_C_BFu0s { char v1; char v2; unsigned short :0; };
struct __attribute__((packed)) aC_D_BFu0c { char v1; double v2; unsigned char :0; };
struct __attribute__((packed)) aC_D_BFu0i { char v1; double v2; unsigned int :0; };
struct __attribute__((packed)) aC_D_BFu0ll { char v1; double v2; unsigned long long :0; };
struct __attribute__((packed)) aC_D_BFu0s { char v1; double v2; unsigned short :0; };
struct __attribute__((packed)) aC_F_BFu0c { char v1; float v2; unsigned char :0; };
struct __attribute__((packed)) aC_F_BFu0i { char v1; float v2; unsigned int :0; };
struct __attribute__((packed)) aC_F_BFu0ll { char v1; float v2; unsigned long long :0; };
struct __attribute__((packed)) aC_F_BFu0s { char v1; float v2; unsigned short :0; };
struct __attribute__((packed)) aC_I_BFu0c { char v1; int v2; unsigned char :0; };
struct __attribute__((packed)) aC_I_BFu0i { char v1; int v2; unsigned int :0; };
struct __attribute__((packed)) aC_I_BFu0ll { char v1; int v2; unsigned long long :0; };
struct __attribute__((packed)) aC_I_BFu0s { char v1; int v2; unsigned short :0; };
struct __attribute__((packed)) aC_Ip_BFu0c { char v1; int * v2; unsigned char :0; };
struct __attribute__((packed)) aC_Ip_BFu0i { char v1; int * v2; unsigned int :0; };
struct __attribute__((packed)) aC_Ip_BFu0ll { char v1; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Ip_BFu0s { char v1; int * v2; unsigned short :0; };
struct __attribute__((packed)) aC_L_BFu0c { char v1; long long v2; unsigned char :0; };
struct __attribute__((packed)) aC_L_BFu0i { char v1; long long v2; unsigned int :0; };
struct __attribute__((packed)) aC_L_BFu0ll { char v1; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aC_L_BFu0s { char v1; long long v2; unsigned short :0; };
struct __attribute__((packed)) aC_S_BFu0c { char v1; short v2; unsigned char :0; };
struct __attribute__((packed)) aC_S_BFu0i { char v1; short v2; unsigned int :0; };
struct __attribute__((packed)) aC_S_BFu0ll { char v1; short v2; unsigned long long :0; };
struct __attribute__((packed)) aC_S_BFu0s { char v1; short v2; unsigned short :0; };
struct __attribute__((packed)) aC_Uc_BFu0c { char v1; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aC_Uc_BFu0i { char v1; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aC_Uc_BFu0ll { char v1; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Uc_BFu0s { char v1; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aC_Ui_BFu0c { char v1; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aC_Ui_BFu0i { char v1; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aC_Ui_BFu0ll { char v1; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Ui_BFu0s { char v1; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aC_Ul_BFu0c { char v1; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aC_Ul_BFu0i { char v1; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aC_Ul_BFu0ll { char v1; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Ul_BFu0s { char v1; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aC_Us_BFu0c { char v1; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aC_Us_BFu0i { char v1; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aC_Us_BFu0ll { char v1; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Us_BFu0s { char v1; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aC_Vp_BFu0c { char v1; void * v2; unsigned char :0; };
struct __attribute__((packed)) aC_Vp_BFu0i { char v1; void * v2; unsigned int :0; };
struct __attribute__((packed)) aC_Vp_BFu0ll { char v1; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aC_Vp_BFu0s { char v1; void * v2; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0c { double v1; unsigned char :0; };
struct __attribute__((packed)) aD_BFu0c_BFu0c { double v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aD_BFu0c_BFu0i { double v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aD_BFu0c_BFu0ll { double v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu0c_BFu0s { double v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0c_BFu15i { double v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aD_BFu0c_BFu15ll { double v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aD_BFu0c_BFu15s { double v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aD_BFu0c_BFu16i { double v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aD_BFu0c_BFu16ll { double v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aD_BFu0c_BFu16s { double v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aD_BFu0c_BFu17i { double v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aD_BFu0c_BFu17ll { double v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aD_BFu0c_BFu1c { double v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aD_BFu0c_BFu1i { double v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aD_BFu0c_BFu1ll { double v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aD_BFu0c_BFu1s { double v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aD_BFu0c_BFu31i { double v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aD_BFu0c_BFu31ll { double v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aD_BFu0c_BFu32i { double v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aD_BFu0c_BFu32ll { double v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aD_BFu0c_BFu33 { double v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aD_BFu0c_BFu7c { double v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aD_BFu0c_BFu7i { double v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aD_BFu0c_BFu7ll { double v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aD_BFu0c_BFu7s { double v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aD_BFu0c_BFu8c { double v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aD_BFu0c_BFu8i { double v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aD_BFu0c_BFu8ll { double v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aD_BFu0c_BFu8s { double v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aD_BFu0c_BFu9i { double v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aD_BFu0c_BFu9ll { double v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aD_BFu0c_BFu9s { double v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aD_BFu0c_C { double v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aD_BFu0c_D { double v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aD_BFu0c_F { double v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aD_BFu0c_I { double v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aD_BFu0c_Ip { double v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aD_BFu0c_L { double v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aD_BFu0c_S { double v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aD_BFu0c_Uc { double v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aD_BFu0c_Ui { double v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aD_BFu0c_Ul { double v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aD_BFu0c_Us { double v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aD_BFu0c_Vp { double v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aD_BFu0i { double v1; unsigned int :0; };
struct __attribute__((packed)) aD_BFu0i_BFu0c { double v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aD_BFu0i_BFu0i { double v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aD_BFu0i_BFu0ll { double v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu0i_BFu0s { double v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0i_BFu15i { double v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aD_BFu0i_BFu15ll { double v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aD_BFu0i_BFu15s { double v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aD_BFu0i_BFu16i { double v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aD_BFu0i_BFu16ll { double v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aD_BFu0i_BFu16s { double v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aD_BFu0i_BFu17i { double v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aD_BFu0i_BFu17ll { double v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aD_BFu0i_BFu1c { double v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aD_BFu0i_BFu1i { double v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aD_BFu0i_BFu1ll { double v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aD_BFu0i_BFu1s { double v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aD_BFu0i_BFu31i { double v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aD_BFu0i_BFu31ll { double v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aD_BFu0i_BFu32i { double v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aD_BFu0i_BFu32ll { double v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aD_BFu0i_BFu33 { double v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aD_BFu0i_BFu7c { double v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aD_BFu0i_BFu7i { double v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aD_BFu0i_BFu7ll { double v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aD_BFu0i_BFu7s { double v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aD_BFu0i_BFu8c { double v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aD_BFu0i_BFu8i { double v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aD_BFu0i_BFu8ll { double v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aD_BFu0i_BFu8s { double v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aD_BFu0i_BFu9i { double v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aD_BFu0i_BFu9ll { double v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aD_BFu0i_BFu9s { double v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aD_BFu0i_C { double v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aD_BFu0i_D { double v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aD_BFu0i_F { double v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aD_BFu0i_I { double v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aD_BFu0i_Ip { double v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aD_BFu0i_L { double v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aD_BFu0i_S { double v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aD_BFu0i_Uc { double v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aD_BFu0i_Ui { double v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aD_BFu0i_Ul { double v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aD_BFu0i_Us { double v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aD_BFu0i_Vp { double v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aD_BFu0ll { double v1; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu0ll_BFu0c { double v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aD_BFu0ll_BFu0i { double v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aD_BFu0ll_BFu0ll { double v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu0ll_BFu0s { double v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0ll_BFu15i { double v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aD_BFu0ll_BFu15ll { double v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aD_BFu0ll_BFu15s { double v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aD_BFu0ll_BFu16i { double v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aD_BFu0ll_BFu16ll { double v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aD_BFu0ll_BFu16s { double v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aD_BFu0ll_BFu17i { double v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aD_BFu0ll_BFu17ll { double v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aD_BFu0ll_BFu1c { double v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aD_BFu0ll_BFu1i { double v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aD_BFu0ll_BFu1ll { double v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aD_BFu0ll_BFu1s { double v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aD_BFu0ll_BFu31i { double v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aD_BFu0ll_BFu31ll { double v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aD_BFu0ll_BFu32i { double v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aD_BFu0ll_BFu32ll { double v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aD_BFu0ll_BFu33 { double v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aD_BFu0ll_BFu7c { double v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aD_BFu0ll_BFu7i { double v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aD_BFu0ll_BFu7ll { double v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aD_BFu0ll_BFu7s { double v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aD_BFu0ll_BFu8c { double v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aD_BFu0ll_BFu8i { double v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aD_BFu0ll_BFu8ll { double v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aD_BFu0ll_BFu8s { double v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aD_BFu0ll_BFu9i { double v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aD_BFu0ll_BFu9ll { double v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aD_BFu0ll_BFu9s { double v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aD_BFu0ll_C { double v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aD_BFu0ll_D { double v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aD_BFu0ll_F { double v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aD_BFu0ll_I { double v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aD_BFu0ll_Ip { double v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aD_BFu0ll_L { double v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aD_BFu0ll_S { double v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aD_BFu0ll_Uc { double v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aD_BFu0ll_Ui { double v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aD_BFu0ll_Ul { double v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aD_BFu0ll_Us { double v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aD_BFu0ll_Vp { double v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aD_BFu0s { double v1; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0s_BFu0c { double v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aD_BFu0s_BFu0i { double v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aD_BFu0s_BFu0ll { double v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu0s_BFu0s { double v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aD_BFu0s_BFu15i { double v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aD_BFu0s_BFu15ll { double v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aD_BFu0s_BFu15s { double v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aD_BFu0s_BFu16i { double v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aD_BFu0s_BFu16ll { double v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aD_BFu0s_BFu16s { double v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aD_BFu0s_BFu17i { double v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aD_BFu0s_BFu17ll { double v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aD_BFu0s_BFu1c { double v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aD_BFu0s_BFu1i { double v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aD_BFu0s_BFu1ll { double v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aD_BFu0s_BFu1s { double v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aD_BFu0s_BFu31i { double v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aD_BFu0s_BFu31ll { double v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aD_BFu0s_BFu32i { double v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aD_BFu0s_BFu32ll { double v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aD_BFu0s_BFu33 { double v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aD_BFu0s_BFu7c { double v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aD_BFu0s_BFu7i { double v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aD_BFu0s_BFu7ll { double v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aD_BFu0s_BFu7s { double v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aD_BFu0s_BFu8c { double v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aD_BFu0s_BFu8i { double v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aD_BFu0s_BFu8ll { double v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aD_BFu0s_BFu8s { double v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aD_BFu0s_BFu9i { double v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aD_BFu0s_BFu9ll { double v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aD_BFu0s_BFu9s { double v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aD_BFu0s_C { double v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aD_BFu0s_D { double v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aD_BFu0s_F { double v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aD_BFu0s_I { double v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aD_BFu0s_Ip { double v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aD_BFu0s_L { double v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aD_BFu0s_S { double v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aD_BFu0s_Uc { double v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aD_BFu0s_Ui { double v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aD_BFu0s_Ul { double v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aD_BFu0s_Us { double v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aD_BFu0s_Vp { double v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aD_BFu15i_BFu0c { double v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aD_BFu15i_BFu0i { double v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aD_BFu15i_BFu0ll { double v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu15i_BFu0s { double v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aD_BFu15ll_BFu0c { double v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aD_BFu15ll_BFu0i { double v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aD_BFu15ll_BFu0ll { double v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu15ll_BFu0s { double v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aD_BFu15s_BFu0c { double v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aD_BFu15s_BFu0i { double v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aD_BFu15s_BFu0ll { double v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu15s_BFu0s { double v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aD_BFu16i_BFu0c { double v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aD_BFu16i_BFu0i { double v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aD_BFu16i_BFu0ll { double v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu16i_BFu0s { double v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aD_BFu16ll_BFu0c { double v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aD_BFu16ll_BFu0i { double v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aD_BFu16ll_BFu0ll { double v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu16ll_BFu0s { double v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aD_BFu16s_BFu0c { double v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aD_BFu16s_BFu0i { double v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aD_BFu16s_BFu0ll { double v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu16s_BFu0s { double v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aD_BFu17i_BFu0c { double v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aD_BFu17i_BFu0i { double v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aD_BFu17i_BFu0ll { double v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu17i_BFu0s { double v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aD_BFu17ll_BFu0c { double v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aD_BFu17ll_BFu0i { double v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aD_BFu17ll_BFu0ll { double v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu17ll_BFu0s { double v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aD_BFu1c_BFu0c { double v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aD_BFu1c_BFu0i { double v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aD_BFu1c_BFu0ll { double v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu1c_BFu0s { double v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aD_BFu1i_BFu0c { double v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aD_BFu1i_BFu0i { double v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aD_BFu1i_BFu0ll { double v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu1i_BFu0s { double v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aD_BFu1ll_BFu0c { double v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aD_BFu1ll_BFu0i { double v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aD_BFu1ll_BFu0ll { double v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu1ll_BFu0s { double v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aD_BFu1s_BFu0c { double v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aD_BFu1s_BFu0i { double v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aD_BFu1s_BFu0ll { double v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu1s_BFu0s { double v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aD_BFu31i_BFu0c { double v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aD_BFu31i_BFu0i { double v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aD_BFu31i_BFu0ll { double v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu31i_BFu0s { double v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aD_BFu31ll_BFu0c { double v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aD_BFu31ll_BFu0i { double v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aD_BFu31ll_BFu0ll { double v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu31ll_BFu0s { double v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aD_BFu32i_BFu0c { double v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aD_BFu32i_BFu0i { double v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aD_BFu32i_BFu0ll { double v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu32i_BFu0s { double v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aD_BFu32ll_BFu0c { double v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aD_BFu32ll_BFu0i { double v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aD_BFu32ll_BFu0ll { double v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu32ll_BFu0s { double v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aD_BFu33_BFu0c { double v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aD_BFu33_BFu0i { double v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aD_BFu33_BFu0ll { double v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu33_BFu0s { double v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aD_BFu7c_BFu0c { double v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aD_BFu7c_BFu0i { double v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aD_BFu7c_BFu0ll { double v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu7c_BFu0s { double v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aD_BFu7i_BFu0c { double v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aD_BFu7i_BFu0i { double v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aD_BFu7i_BFu0ll { double v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu7i_BFu0s { double v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aD_BFu7ll_BFu0c { double v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aD_BFu7ll_BFu0i { double v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aD_BFu7ll_BFu0ll { double v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu7ll_BFu0s { double v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aD_BFu7s_BFu0c { double v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aD_BFu7s_BFu0i { double v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aD_BFu7s_BFu0ll { double v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu7s_BFu0s { double v1; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aD_BFu8c_BFu0c { double v1; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aD_BFu8c_BFu0i { double v1; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aD_BFu8c_BFu0ll { double v1; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu8c_BFu0s { double v1; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aD_BFu8i_BFu0c { double v1; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aD_BFu8i_BFu0i { double v1; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aD_BFu8i_BFu0ll { double v1; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu8i_BFu0s { double v1; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aD_BFu8ll_BFu0c { double v1; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aD_BFu8ll_BFu0i { double v1; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aD_BFu8ll_BFu0ll { double v1; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu8ll_BFu0s { double v1; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aD_BFu8s_BFu0c { double v1; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aD_BFu8s_BFu0i { double v1; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aD_BFu8s_BFu0ll { double v1; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu8s_BFu0s { double v1; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aD_BFu9i_BFu0c { double v1; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aD_BFu9i_BFu0i { double v1; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aD_BFu9i_BFu0ll { double v1; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu9i_BFu0s { double v1; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aD_BFu9ll_BFu0c { double v1; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aD_BFu9ll_BFu0i { double v1; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aD_BFu9ll_BFu0ll { double v1; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu9ll_BFu0s { double v1; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aD_BFu9s_BFu0c { double v1; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aD_BFu9s_BFu0i { double v1; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aD_BFu9s_BFu0ll { double v1; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aD_BFu9s_BFu0s { double v1; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aD_C_BFu0c { double v1; char v2; unsigned char :0; };
struct __attribute__((packed)) aD_C_BFu0i { double v1; char v2; unsigned int :0; };
struct __attribute__((packed)) aD_C_BFu0ll { double v1; char v2; unsigned long long :0; };
struct __attribute__((packed)) aD_C_BFu0s { double v1; char v2; unsigned short :0; };
struct __attribute__((packed)) aD_D_BFu0c { double v1; double v2; unsigned char :0; };
struct __attribute__((packed)) aD_D_BFu0i { double v1; double v2; unsigned int :0; };
struct __attribute__((packed)) aD_D_BFu0ll { double v1; double v2; unsigned long long :0; };
struct __attribute__((packed)) aD_D_BFu0s { double v1; double v2; unsigned short :0; };
struct __attribute__((packed)) aD_F_BFu0c { double v1; float v2; unsigned char :0; };
struct __attribute__((packed)) aD_F_BFu0i { double v1; float v2; unsigned int :0; };
struct __attribute__((packed)) aD_F_BFu0ll { double v1; float v2; unsigned long long :0; };
struct __attribute__((packed)) aD_F_BFu0s { double v1; float v2; unsigned short :0; };
struct __attribute__((packed)) aD_I_BFu0c { double v1; int v2; unsigned char :0; };
struct __attribute__((packed)) aD_I_BFu0i { double v1; int v2; unsigned int :0; };
struct __attribute__((packed)) aD_I_BFu0ll { double v1; int v2; unsigned long long :0; };
struct __attribute__((packed)) aD_I_BFu0s { double v1; int v2; unsigned short :0; };
struct __attribute__((packed)) aD_Ip_BFu0c { double v1; int * v2; unsigned char :0; };
struct __attribute__((packed)) aD_Ip_BFu0i { double v1; int * v2; unsigned int :0; };
struct __attribute__((packed)) aD_Ip_BFu0ll { double v1; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Ip_BFu0s { double v1; int * v2; unsigned short :0; };
struct __attribute__((packed)) aD_L_BFu0c { double v1; long long v2; unsigned char :0; };
struct __attribute__((packed)) aD_L_BFu0i { double v1; long long v2; unsigned int :0; };
struct __attribute__((packed)) aD_L_BFu0ll { double v1; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aD_L_BFu0s { double v1; long long v2; unsigned short :0; };
struct __attribute__((packed)) aD_S_BFu0c { double v1; short v2; unsigned char :0; };
struct __attribute__((packed)) aD_S_BFu0i { double v1; short v2; unsigned int :0; };
struct __attribute__((packed)) aD_S_BFu0ll { double v1; short v2; unsigned long long :0; };
struct __attribute__((packed)) aD_S_BFu0s { double v1; short v2; unsigned short :0; };
struct __attribute__((packed)) aD_Uc_BFu0c { double v1; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aD_Uc_BFu0i { double v1; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aD_Uc_BFu0ll { double v1; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Uc_BFu0s { double v1; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aD_Ui_BFu0c { double v1; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aD_Ui_BFu0i { double v1; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aD_Ui_BFu0ll { double v1; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Ui_BFu0s { double v1; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aD_Ul_BFu0c { double v1; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aD_Ul_BFu0i { double v1; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aD_Ul_BFu0ll { double v1; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Ul_BFu0s { double v1; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aD_Us_BFu0c { double v1; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aD_Us_BFu0i { double v1; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aD_Us_BFu0ll { double v1; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Us_BFu0s { double v1; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aD_Vp_BFu0c { double v1; void * v2; unsigned char :0; };
struct __attribute__((packed)) aD_Vp_BFu0i { double v1; void * v2; unsigned int :0; };
struct __attribute__((packed)) aD_Vp_BFu0ll { double v1; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aD_Vp_BFu0s { double v1; void * v2; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0c { float v1; unsigned char :0; };
struct __attribute__((packed)) aF_BFu0c_BFu0c { float v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aF_BFu0c_BFu0i { float v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aF_BFu0c_BFu0ll { float v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu0c_BFu0s { float v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0c_BFu15i { float v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aF_BFu0c_BFu15ll { float v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aF_BFu0c_BFu15s { float v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aF_BFu0c_BFu16i { float v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aF_BFu0c_BFu16ll { float v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aF_BFu0c_BFu16s { float v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aF_BFu0c_BFu17i { float v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aF_BFu0c_BFu17ll { float v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aF_BFu0c_BFu1c { float v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aF_BFu0c_BFu1i { float v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aF_BFu0c_BFu1ll { float v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aF_BFu0c_BFu1s { float v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aF_BFu0c_BFu31i { float v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aF_BFu0c_BFu31ll { float v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aF_BFu0c_BFu32i { float v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aF_BFu0c_BFu32ll { float v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aF_BFu0c_BFu33 { float v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aF_BFu0c_BFu7c { float v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aF_BFu0c_BFu7i { float v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aF_BFu0c_BFu7ll { float v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aF_BFu0c_BFu7s { float v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aF_BFu0c_BFu8c { float v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aF_BFu0c_BFu8i { float v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aF_BFu0c_BFu8ll { float v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aF_BFu0c_BFu8s { float v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aF_BFu0c_BFu9i { float v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aF_BFu0c_BFu9ll { float v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aF_BFu0c_BFu9s { float v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aF_BFu0c_C { float v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aF_BFu0c_D { float v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aF_BFu0c_F { float v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aF_BFu0c_I { float v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aF_BFu0c_Ip { float v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aF_BFu0c_L { float v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aF_BFu0c_S { float v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aF_BFu0c_Uc { float v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aF_BFu0c_Ui { float v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aF_BFu0c_Ul { float v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aF_BFu0c_Us { float v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aF_BFu0c_Vp { float v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aF_BFu0i { float v1; unsigned int :0; };
struct __attribute__((packed)) aF_BFu0i_BFu0c { float v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aF_BFu0i_BFu0i { float v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aF_BFu0i_BFu0ll { float v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu0i_BFu0s { float v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0i_BFu15i { float v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aF_BFu0i_BFu15ll { float v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aF_BFu0i_BFu15s { float v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aF_BFu0i_BFu16i { float v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aF_BFu0i_BFu16ll { float v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aF_BFu0i_BFu16s { float v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aF_BFu0i_BFu17i { float v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aF_BFu0i_BFu17ll { float v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aF_BFu0i_BFu1c { float v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aF_BFu0i_BFu1i { float v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aF_BFu0i_BFu1ll { float v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aF_BFu0i_BFu1s { float v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aF_BFu0i_BFu31i { float v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aF_BFu0i_BFu31ll { float v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aF_BFu0i_BFu32i { float v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aF_BFu0i_BFu32ll { float v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aF_BFu0i_BFu33 { float v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aF_BFu0i_BFu7c { float v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aF_BFu0i_BFu7i { float v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aF_BFu0i_BFu7ll { float v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aF_BFu0i_BFu7s { float v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aF_BFu0i_BFu8c { float v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aF_BFu0i_BFu8i { float v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aF_BFu0i_BFu8ll { float v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aF_BFu0i_BFu8s { float v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aF_BFu0i_BFu9i { float v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aF_BFu0i_BFu9ll { float v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aF_BFu0i_BFu9s { float v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aF_BFu0i_C { float v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aF_BFu0i_D { float v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aF_BFu0i_F { float v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aF_BFu0i_I { float v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aF_BFu0i_Ip { float v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aF_BFu0i_L { float v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aF_BFu0i_S { float v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aF_BFu0i_Uc { float v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aF_BFu0i_Ui { float v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aF_BFu0i_Ul { float v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aF_BFu0i_Us { float v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aF_BFu0i_Vp { float v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aF_BFu0ll { float v1; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu0ll_BFu0c { float v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aF_BFu0ll_BFu0i { float v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aF_BFu0ll_BFu0ll { float v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu0ll_BFu0s { float v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0ll_BFu15i { float v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aF_BFu0ll_BFu15ll { float v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aF_BFu0ll_BFu15s { float v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aF_BFu0ll_BFu16i { float v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aF_BFu0ll_BFu16ll { float v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aF_BFu0ll_BFu16s { float v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aF_BFu0ll_BFu17i { float v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aF_BFu0ll_BFu17ll { float v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aF_BFu0ll_BFu1c { float v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aF_BFu0ll_BFu1i { float v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aF_BFu0ll_BFu1ll { float v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aF_BFu0ll_BFu1s { float v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aF_BFu0ll_BFu31i { float v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aF_BFu0ll_BFu31ll { float v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aF_BFu0ll_BFu32i { float v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aF_BFu0ll_BFu32ll { float v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aF_BFu0ll_BFu33 { float v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aF_BFu0ll_BFu7c { float v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aF_BFu0ll_BFu7i { float v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aF_BFu0ll_BFu7ll { float v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aF_BFu0ll_BFu7s { float v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aF_BFu0ll_BFu8c { float v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aF_BFu0ll_BFu8i { float v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aF_BFu0ll_BFu8ll { float v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aF_BFu0ll_BFu8s { float v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aF_BFu0ll_BFu9i { float v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aF_BFu0ll_BFu9ll { float v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aF_BFu0ll_BFu9s { float v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aF_BFu0ll_C { float v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aF_BFu0ll_D { float v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aF_BFu0ll_F { float v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aF_BFu0ll_I { float v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aF_BFu0ll_Ip { float v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aF_BFu0ll_L { float v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aF_BFu0ll_S { float v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aF_BFu0ll_Uc { float v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aF_BFu0ll_Ui { float v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aF_BFu0ll_Ul { float v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aF_BFu0ll_Us { float v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aF_BFu0ll_Vp { float v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aF_BFu0s { float v1; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0s_BFu0c { float v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aF_BFu0s_BFu0i { float v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aF_BFu0s_BFu0ll { float v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu0s_BFu0s { float v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aF_BFu0s_BFu15i { float v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aF_BFu0s_BFu15ll { float v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aF_BFu0s_BFu15s { float v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aF_BFu0s_BFu16i { float v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aF_BFu0s_BFu16ll { float v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aF_BFu0s_BFu16s { float v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aF_BFu0s_BFu17i { float v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aF_BFu0s_BFu17ll { float v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aF_BFu0s_BFu1c { float v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aF_BFu0s_BFu1i { float v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aF_BFu0s_BFu1ll { float v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aF_BFu0s_BFu1s { float v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aF_BFu0s_BFu31i { float v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aF_BFu0s_BFu31ll { float v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aF_BFu0s_BFu32i { float v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aF_BFu0s_BFu32ll { float v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aF_BFu0s_BFu33 { float v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aF_BFu0s_BFu7c { float v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aF_BFu0s_BFu7i { float v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aF_BFu0s_BFu7ll { float v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aF_BFu0s_BFu7s { float v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aF_BFu0s_BFu8c { float v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aF_BFu0s_BFu8i { float v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aF_BFu0s_BFu8ll { float v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aF_BFu0s_BFu8s { float v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aF_BFu0s_BFu9i { float v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aF_BFu0s_BFu9ll { float v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aF_BFu0s_BFu9s { float v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aF_BFu0s_C { float v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aF_BFu0s_D { float v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aF_BFu0s_F { float v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aF_BFu0s_I { float v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aF_BFu0s_Ip { float v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aF_BFu0s_L { float v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aF_BFu0s_S { float v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aF_BFu0s_Uc { float v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aF_BFu0s_Ui { float v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aF_BFu0s_Ul { float v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aF_BFu0s_Us { float v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aF_BFu0s_Vp { float v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aF_BFu15i_BFu0c { float v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aF_BFu15i_BFu0i { float v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aF_BFu15i_BFu0ll { float v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu15i_BFu0s { float v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aF_BFu15ll_BFu0c { float v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aF_BFu15ll_BFu0i { float v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aF_BFu15ll_BFu0ll { float v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu15ll_BFu0s { float v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aF_BFu15s_BFu0c { float v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aF_BFu15s_BFu0i { float v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aF_BFu15s_BFu0ll { float v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu15s_BFu0s { float v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aF_BFu16i_BFu0c { float v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aF_BFu16i_BFu0i { float v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aF_BFu16i_BFu0ll { float v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu16i_BFu0s { float v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aF_BFu16ll_BFu0c { float v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aF_BFu16ll_BFu0i { float v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aF_BFu16ll_BFu0ll { float v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu16ll_BFu0s { float v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aF_BFu16s_BFu0c { float v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aF_BFu16s_BFu0i { float v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aF_BFu16s_BFu0ll { float v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu16s_BFu0s { float v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aF_BFu17i_BFu0c { float v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aF_BFu17i_BFu0i { float v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aF_BFu17i_BFu0ll { float v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu17i_BFu0s { float v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aF_BFu17ll_BFu0c { float v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aF_BFu17ll_BFu0i { float v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aF_BFu17ll_BFu0ll { float v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu17ll_BFu0s { float v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aF_BFu1c_BFu0c { float v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aF_BFu1c_BFu0i { float v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aF_BFu1c_BFu0ll { float v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu1c_BFu0s { float v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aF_BFu1i_BFu0c { float v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aF_BFu1i_BFu0i { float v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aF_BFu1i_BFu0ll { float v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu1i_BFu0s { float v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aF_BFu1ll_BFu0c { float v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aF_BFu1ll_BFu0i { float v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aF_BFu1ll_BFu0ll { float v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu1ll_BFu0s { float v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aF_BFu1s_BFu0c { float v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aF_BFu1s_BFu0i { float v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aF_BFu1s_BFu0ll { float v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu1s_BFu0s { float v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aF_BFu31i_BFu0c { float v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aF_BFu31i_BFu0i { float v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aF_BFu31i_BFu0ll { float v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu31i_BFu0s { float v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aF_BFu31ll_BFu0c { float v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aF_BFu31ll_BFu0i { float v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aF_BFu31ll_BFu0ll { float v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu31ll_BFu0s { float v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aF_BFu32i_BFu0c { float v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aF_BFu32i_BFu0i { float v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aF_BFu32i_BFu0ll { float v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu32i_BFu0s { float v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aF_BFu32ll_BFu0c { float v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aF_BFu32ll_BFu0i { float v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aF_BFu32ll_BFu0ll { float v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu32ll_BFu0s { float v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aF_BFu33_BFu0c { float v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aF_BFu33_BFu0i { float v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aF_BFu33_BFu0ll { float v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu33_BFu0s { float v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aF_BFu7c_BFu0c { float v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aF_BFu7c_BFu0i { float v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aF_BFu7c_BFu0ll { float v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu7c_BFu0s { float v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aF_BFu7i_BFu0c { float v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aF_BFu7i_BFu0i { float v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aF_BFu7i_BFu0ll { float v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu7i_BFu0s { float v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aF_BFu7ll_BFu0c { float v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aF_BFu7ll_BFu0i { float v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aF_BFu7ll_BFu0ll { float v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu7ll_BFu0s { float v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aF_BFu7s_BFu0c { float v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aF_BFu7s_BFu0i { float v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aF_BFu7s_BFu0ll { float v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu7s_BFu0s { float v1; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aF_BFu8c_BFu0c { float v1; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aF_BFu8c_BFu0i { float v1; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aF_BFu8c_BFu0ll { float v1; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu8c_BFu0s { float v1; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aF_BFu8i_BFu0c { float v1; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aF_BFu8i_BFu0i { float v1; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aF_BFu8i_BFu0ll { float v1; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu8i_BFu0s { float v1; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aF_BFu8ll_BFu0c { float v1; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aF_BFu8ll_BFu0i { float v1; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aF_BFu8ll_BFu0ll { float v1; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu8ll_BFu0s { float v1; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aF_BFu8s_BFu0c { float v1; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aF_BFu8s_BFu0i { float v1; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aF_BFu8s_BFu0ll { float v1; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu8s_BFu0s { float v1; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aF_BFu9i_BFu0c { float v1; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aF_BFu9i_BFu0i { float v1; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aF_BFu9i_BFu0ll { float v1; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu9i_BFu0s { float v1; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aF_BFu9ll_BFu0c { float v1; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aF_BFu9ll_BFu0i { float v1; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aF_BFu9ll_BFu0ll { float v1; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu9ll_BFu0s { float v1; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aF_BFu9s_BFu0c { float v1; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aF_BFu9s_BFu0i { float v1; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aF_BFu9s_BFu0ll { float v1; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aF_BFu9s_BFu0s { float v1; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aF_C_BFu0c { float v1; char v2; unsigned char :0; };
struct __attribute__((packed)) aF_C_BFu0i { float v1; char v2; unsigned int :0; };
struct __attribute__((packed)) aF_C_BFu0ll { float v1; char v2; unsigned long long :0; };
struct __attribute__((packed)) aF_C_BFu0s { float v1; char v2; unsigned short :0; };
struct __attribute__((packed)) aF_D_BFu0c { float v1; double v2; unsigned char :0; };
struct __attribute__((packed)) aF_D_BFu0i { float v1; double v2; unsigned int :0; };
struct __attribute__((packed)) aF_D_BFu0ll { float v1; double v2; unsigned long long :0; };
struct __attribute__((packed)) aF_D_BFu0s { float v1; double v2; unsigned short :0; };
struct __attribute__((packed)) aF_F_BFu0c { float v1; float v2; unsigned char :0; };
struct __attribute__((packed)) aF_F_BFu0i { float v1; float v2; unsigned int :0; };
struct __attribute__((packed)) aF_F_BFu0ll { float v1; float v2; unsigned long long :0; };
struct __attribute__((packed)) aF_F_BFu0s { float v1; float v2; unsigned short :0; };
struct __attribute__((packed)) aF_I_BFu0c { float v1; int v2; unsigned char :0; };
struct __attribute__((packed)) aF_I_BFu0i { float v1; int v2; unsigned int :0; };
struct __attribute__((packed)) aF_I_BFu0ll { float v1; int v2; unsigned long long :0; };
struct __attribute__((packed)) aF_I_BFu0s { float v1; int v2; unsigned short :0; };
struct __attribute__((packed)) aF_Ip_BFu0c { float v1; int * v2; unsigned char :0; };
struct __attribute__((packed)) aF_Ip_BFu0i { float v1; int * v2; unsigned int :0; };
struct __attribute__((packed)) aF_Ip_BFu0ll { float v1; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Ip_BFu0s { float v1; int * v2; unsigned short :0; };
struct __attribute__((packed)) aF_L_BFu0c { float v1; long long v2; unsigned char :0; };
struct __attribute__((packed)) aF_L_BFu0i { float v1; long long v2; unsigned int :0; };
struct __attribute__((packed)) aF_L_BFu0ll { float v1; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aF_L_BFu0s { float v1; long long v2; unsigned short :0; };
struct __attribute__((packed)) aF_S_BFu0c { float v1; short v2; unsigned char :0; };
struct __attribute__((packed)) aF_S_BFu0i { float v1; short v2; unsigned int :0; };
struct __attribute__((packed)) aF_S_BFu0ll { float v1; short v2; unsigned long long :0; };
struct __attribute__((packed)) aF_S_BFu0s { float v1; short v2; unsigned short :0; };
struct __attribute__((packed)) aF_Uc_BFu0c { float v1; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aF_Uc_BFu0i { float v1; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aF_Uc_BFu0ll { float v1; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Uc_BFu0s { float v1; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aF_Ui_BFu0c { float v1; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aF_Ui_BFu0i { float v1; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aF_Ui_BFu0ll { float v1; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Ui_BFu0s { float v1; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aF_Ul_BFu0c { float v1; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aF_Ul_BFu0i { float v1; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aF_Ul_BFu0ll { float v1; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Ul_BFu0s { float v1; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aF_Us_BFu0c { float v1; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aF_Us_BFu0i { float v1; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aF_Us_BFu0ll { float v1; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Us_BFu0s { float v1; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aF_Vp_BFu0c { float v1; void * v2; unsigned char :0; };
struct __attribute__((packed)) aF_Vp_BFu0i { float v1; void * v2; unsigned int :0; };
struct __attribute__((packed)) aF_Vp_BFu0ll { float v1; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aF_Vp_BFu0s { float v1; void * v2; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0c { int v1; unsigned char :0; };
struct __attribute__((packed)) aI_BFu0c_BFu0c { int v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aI_BFu0c_BFu0i { int v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aI_BFu0c_BFu0ll { int v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu0c_BFu0s { int v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0c_BFu15i { int v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aI_BFu0c_BFu15ll { int v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aI_BFu0c_BFu15s { int v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aI_BFu0c_BFu16i { int v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aI_BFu0c_BFu16ll { int v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aI_BFu0c_BFu16s { int v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aI_BFu0c_BFu17i { int v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aI_BFu0c_BFu17ll { int v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aI_BFu0c_BFu1c { int v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aI_BFu0c_BFu1i { int v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aI_BFu0c_BFu1ll { int v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aI_BFu0c_BFu1s { int v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aI_BFu0c_BFu31i { int v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aI_BFu0c_BFu31ll { int v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aI_BFu0c_BFu32i { int v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aI_BFu0c_BFu32ll { int v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aI_BFu0c_BFu33 { int v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aI_BFu0c_BFu7c { int v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aI_BFu0c_BFu7i { int v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aI_BFu0c_BFu7ll { int v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aI_BFu0c_BFu7s { int v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aI_BFu0c_BFu8c { int v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aI_BFu0c_BFu8i { int v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aI_BFu0c_BFu8ll { int v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aI_BFu0c_BFu8s { int v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aI_BFu0c_BFu9i { int v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aI_BFu0c_BFu9ll { int v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aI_BFu0c_BFu9s { int v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aI_BFu0c_C { int v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aI_BFu0c_D { int v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aI_BFu0c_F { int v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aI_BFu0c_I { int v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aI_BFu0c_Ip { int v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aI_BFu0c_L { int v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aI_BFu0c_S { int v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aI_BFu0c_Uc { int v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aI_BFu0c_Ui { int v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aI_BFu0c_Ul { int v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aI_BFu0c_Us { int v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aI_BFu0c_Vp { int v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aI_BFu0i { int v1; unsigned int :0; };
struct __attribute__((packed)) aI_BFu0i_BFu0c { int v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aI_BFu0i_BFu0i { int v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aI_BFu0i_BFu0ll { int v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu0i_BFu0s { int v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0i_BFu15i { int v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aI_BFu0i_BFu15ll { int v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aI_BFu0i_BFu15s { int v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aI_BFu0i_BFu16i { int v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aI_BFu0i_BFu16ll { int v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aI_BFu0i_BFu16s { int v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aI_BFu0i_BFu17i { int v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aI_BFu0i_BFu17ll { int v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aI_BFu0i_BFu1c { int v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aI_BFu0i_BFu1i { int v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aI_BFu0i_BFu1ll { int v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aI_BFu0i_BFu1s { int v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aI_BFu0i_BFu31i { int v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aI_BFu0i_BFu31ll { int v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aI_BFu0i_BFu32i { int v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aI_BFu0i_BFu32ll { int v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aI_BFu0i_BFu33 { int v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aI_BFu0i_BFu7c { int v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aI_BFu0i_BFu7i { int v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aI_BFu0i_BFu7ll { int v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aI_BFu0i_BFu7s { int v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aI_BFu0i_BFu8c { int v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aI_BFu0i_BFu8i { int v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aI_BFu0i_BFu8ll { int v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aI_BFu0i_BFu8s { int v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aI_BFu0i_BFu9i { int v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aI_BFu0i_BFu9ll { int v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aI_BFu0i_BFu9s { int v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aI_BFu0i_C { int v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aI_BFu0i_D { int v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aI_BFu0i_F { int v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aI_BFu0i_I { int v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aI_BFu0i_Ip { int v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aI_BFu0i_L { int v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aI_BFu0i_S { int v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aI_BFu0i_Uc { int v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aI_BFu0i_Ui { int v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aI_BFu0i_Ul { int v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aI_BFu0i_Us { int v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aI_BFu0i_Vp { int v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aI_BFu0ll { int v1; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu0ll_BFu0c { int v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aI_BFu0ll_BFu0i { int v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aI_BFu0ll_BFu0ll { int v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu0ll_BFu0s { int v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0ll_BFu15i { int v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aI_BFu0ll_BFu15ll { int v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aI_BFu0ll_BFu15s { int v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aI_BFu0ll_BFu16i { int v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aI_BFu0ll_BFu16ll { int v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aI_BFu0ll_BFu16s { int v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aI_BFu0ll_BFu17i { int v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aI_BFu0ll_BFu17ll { int v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aI_BFu0ll_BFu1c { int v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aI_BFu0ll_BFu1i { int v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aI_BFu0ll_BFu1ll { int v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aI_BFu0ll_BFu1s { int v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aI_BFu0ll_BFu31i { int v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aI_BFu0ll_BFu31ll { int v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aI_BFu0ll_BFu32i { int v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aI_BFu0ll_BFu32ll { int v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aI_BFu0ll_BFu33 { int v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aI_BFu0ll_BFu7c { int v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aI_BFu0ll_BFu7i { int v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aI_BFu0ll_BFu7ll { int v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aI_BFu0ll_BFu7s { int v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aI_BFu0ll_BFu8c { int v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aI_BFu0ll_BFu8i { int v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aI_BFu0ll_BFu8ll { int v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aI_BFu0ll_BFu8s { int v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aI_BFu0ll_BFu9i { int v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aI_BFu0ll_BFu9ll { int v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aI_BFu0ll_BFu9s { int v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aI_BFu0ll_C { int v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aI_BFu0ll_D { int v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aI_BFu0ll_F { int v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aI_BFu0ll_I { int v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aI_BFu0ll_Ip { int v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aI_BFu0ll_L { int v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aI_BFu0ll_S { int v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aI_BFu0ll_Uc { int v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aI_BFu0ll_Ui { int v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aI_BFu0ll_Ul { int v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aI_BFu0ll_Us { int v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aI_BFu0ll_Vp { int v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aI_BFu0s { int v1; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0s_BFu0c { int v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aI_BFu0s_BFu0i { int v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aI_BFu0s_BFu0ll { int v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu0s_BFu0s { int v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aI_BFu0s_BFu15i { int v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aI_BFu0s_BFu15ll { int v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aI_BFu0s_BFu15s { int v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aI_BFu0s_BFu16i { int v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aI_BFu0s_BFu16ll { int v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aI_BFu0s_BFu16s { int v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aI_BFu0s_BFu17i { int v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aI_BFu0s_BFu17ll { int v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aI_BFu0s_BFu1c { int v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aI_BFu0s_BFu1i { int v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aI_BFu0s_BFu1ll { int v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aI_BFu0s_BFu1s { int v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aI_BFu0s_BFu31i { int v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aI_BFu0s_BFu31ll { int v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aI_BFu0s_BFu32i { int v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aI_BFu0s_BFu32ll { int v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aI_BFu0s_BFu33 { int v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aI_BFu0s_BFu7c { int v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aI_BFu0s_BFu7i { int v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aI_BFu0s_BFu7ll { int v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aI_BFu0s_BFu7s { int v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aI_BFu0s_BFu8c { int v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aI_BFu0s_BFu8i { int v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aI_BFu0s_BFu8ll { int v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aI_BFu0s_BFu8s { int v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aI_BFu0s_BFu9i { int v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aI_BFu0s_BFu9ll { int v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aI_BFu0s_BFu9s { int v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aI_BFu0s_C { int v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aI_BFu0s_D { int v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aI_BFu0s_F { int v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aI_BFu0s_I { int v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aI_BFu0s_Ip { int v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aI_BFu0s_L { int v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aI_BFu0s_S { int v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aI_BFu0s_Uc { int v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aI_BFu0s_Ui { int v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aI_BFu0s_Ul { int v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aI_BFu0s_Us { int v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aI_BFu0s_Vp { int v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aI_BFu15i_BFu0c { int v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aI_BFu15i_BFu0i { int v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aI_BFu15i_BFu0ll { int v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu15i_BFu0s { int v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aI_BFu15ll_BFu0c { int v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aI_BFu15ll_BFu0i { int v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aI_BFu15ll_BFu0ll { int v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu15ll_BFu0s { int v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aI_BFu15s_BFu0c { int v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aI_BFu15s_BFu0i { int v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aI_BFu15s_BFu0ll { int v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu15s_BFu0s { int v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aI_BFu16i_BFu0c { int v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aI_BFu16i_BFu0i { int v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aI_BFu16i_BFu0ll { int v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu16i_BFu0s { int v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aI_BFu16ll_BFu0c { int v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aI_BFu16ll_BFu0i { int v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aI_BFu16ll_BFu0ll { int v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu16ll_BFu0s { int v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aI_BFu16s_BFu0c { int v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aI_BFu16s_BFu0i { int v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aI_BFu16s_BFu0ll { int v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu16s_BFu0s { int v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aI_BFu17i_BFu0c { int v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aI_BFu17i_BFu0i { int v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aI_BFu17i_BFu0ll { int v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu17i_BFu0s { int v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aI_BFu17ll_BFu0c { int v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aI_BFu17ll_BFu0i { int v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aI_BFu17ll_BFu0ll { int v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu17ll_BFu0s { int v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aI_BFu1c_BFu0c { int v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aI_BFu1c_BFu0i { int v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aI_BFu1c_BFu0ll { int v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu1c_BFu0s { int v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aI_BFu1i_BFu0c { int v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aI_BFu1i_BFu0i { int v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aI_BFu1i_BFu0ll { int v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu1i_BFu0s { int v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aI_BFu1ll_BFu0c { int v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aI_BFu1ll_BFu0i { int v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aI_BFu1ll_BFu0ll { int v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu1ll_BFu0s { int v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aI_BFu1s_BFu0c { int v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aI_BFu1s_BFu0i { int v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aI_BFu1s_BFu0ll { int v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu1s_BFu0s { int v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aI_BFu31i_BFu0c { int v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aI_BFu31i_BFu0i { int v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aI_BFu31i_BFu0ll { int v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu31i_BFu0s { int v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aI_BFu31ll_BFu0c { int v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aI_BFu31ll_BFu0i { int v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aI_BFu31ll_BFu0ll { int v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu31ll_BFu0s { int v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aI_BFu32i_BFu0c { int v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aI_BFu32i_BFu0i { int v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aI_BFu32i_BFu0ll { int v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu32i_BFu0s { int v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aI_BFu32ll_BFu0c { int v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aI_BFu32ll_BFu0i { int v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aI_BFu32ll_BFu0ll { int v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu32ll_BFu0s { int v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aI_BFu33_BFu0c { int v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aI_BFu33_BFu0i { int v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aI_BFu33_BFu0ll { int v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu33_BFu0s { int v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aI_BFu7c_BFu0c { int v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aI_BFu7c_BFu0i { int v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aI_BFu7c_BFu0ll { int v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu7c_BFu0s { int v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aI_BFu7i_BFu0c { int v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aI_BFu7i_BFu0i { int v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aI_BFu7i_BFu0ll { int v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu7i_BFu0s { int v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aI_BFu7ll_BFu0c { int v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aI_BFu7ll_BFu0i { int v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aI_BFu7ll_BFu0ll { int v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu7ll_BFu0s { int v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aI_BFu7s_BFu0c { int v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aI_BFu7s_BFu0i { int v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aI_BFu7s_BFu0ll { int v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu7s_BFu0s { int v1; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aI_BFu8c_BFu0c { int v1; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aI_BFu8c_BFu0i { int v1; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aI_BFu8c_BFu0ll { int v1; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu8c_BFu0s { int v1; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aI_BFu8i_BFu0c { int v1; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aI_BFu8i_BFu0i { int v1; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aI_BFu8i_BFu0ll { int v1; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu8i_BFu0s { int v1; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aI_BFu8ll_BFu0c { int v1; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aI_BFu8ll_BFu0i { int v1; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aI_BFu8ll_BFu0ll { int v1; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu8ll_BFu0s { int v1; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aI_BFu8s_BFu0c { int v1; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aI_BFu8s_BFu0i { int v1; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aI_BFu8s_BFu0ll { int v1; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu8s_BFu0s { int v1; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aI_BFu9i_BFu0c { int v1; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aI_BFu9i_BFu0i { int v1; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aI_BFu9i_BFu0ll { int v1; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu9i_BFu0s { int v1; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aI_BFu9ll_BFu0c { int v1; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aI_BFu9ll_BFu0i { int v1; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aI_BFu9ll_BFu0ll { int v1; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu9ll_BFu0s { int v1; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aI_BFu9s_BFu0c { int v1; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aI_BFu9s_BFu0i { int v1; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aI_BFu9s_BFu0ll { int v1; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aI_BFu9s_BFu0s { int v1; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aI_C_BFu0c { int v1; char v2; unsigned char :0; };
struct __attribute__((packed)) aI_C_BFu0i { int v1; char v2; unsigned int :0; };
struct __attribute__((packed)) aI_C_BFu0ll { int v1; char v2; unsigned long long :0; };
struct __attribute__((packed)) aI_C_BFu0s { int v1; char v2; unsigned short :0; };
struct __attribute__((packed)) aI_D_BFu0c { int v1; double v2; unsigned char :0; };
struct __attribute__((packed)) aI_D_BFu0i { int v1; double v2; unsigned int :0; };
struct __attribute__((packed)) aI_D_BFu0ll { int v1; double v2; unsigned long long :0; };
struct __attribute__((packed)) aI_D_BFu0s { int v1; double v2; unsigned short :0; };
struct __attribute__((packed)) aI_F_BFu0c { int v1; float v2; unsigned char :0; };
struct __attribute__((packed)) aI_F_BFu0i { int v1; float v2; unsigned int :0; };
struct __attribute__((packed)) aI_F_BFu0ll { int v1; float v2; unsigned long long :0; };
struct __attribute__((packed)) aI_F_BFu0s { int v1; float v2; unsigned short :0; };
struct __attribute__((packed)) aI_I_BFu0c { int v1; int v2; unsigned char :0; };
struct __attribute__((packed)) aI_I_BFu0i { int v1; int v2; unsigned int :0; };
struct __attribute__((packed)) aI_I_BFu0ll { int v1; int v2; unsigned long long :0; };
struct __attribute__((packed)) aI_I_BFu0s { int v1; int v2; unsigned short :0; };
struct __attribute__((packed)) aI_Ip_BFu0c { int v1; int * v2; unsigned char :0; };
struct __attribute__((packed)) aI_Ip_BFu0i { int v1; int * v2; unsigned int :0; };
struct __attribute__((packed)) aI_Ip_BFu0ll { int v1; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Ip_BFu0s { int v1; int * v2; unsigned short :0; };
struct __attribute__((packed)) aI_L_BFu0c { int v1; long long v2; unsigned char :0; };
struct __attribute__((packed)) aI_L_BFu0i { int v1; long long v2; unsigned int :0; };
struct __attribute__((packed)) aI_L_BFu0ll { int v1; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aI_L_BFu0s { int v1; long long v2; unsigned short :0; };
struct __attribute__((packed)) aI_S_BFu0c { int v1; short v2; unsigned char :0; };
struct __attribute__((packed)) aI_S_BFu0i { int v1; short v2; unsigned int :0; };
struct __attribute__((packed)) aI_S_BFu0ll { int v1; short v2; unsigned long long :0; };
struct __attribute__((packed)) aI_S_BFu0s { int v1; short v2; unsigned short :0; };
struct __attribute__((packed)) aI_Uc_BFu0c { int v1; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aI_Uc_BFu0i { int v1; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aI_Uc_BFu0ll { int v1; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Uc_BFu0s { int v1; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aI_Ui_BFu0c { int v1; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aI_Ui_BFu0i { int v1; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aI_Ui_BFu0ll { int v1; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Ui_BFu0s { int v1; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aI_Ul_BFu0c { int v1; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aI_Ul_BFu0i { int v1; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aI_Ul_BFu0ll { int v1; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Ul_BFu0s { int v1; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aI_Us_BFu0c { int v1; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aI_Us_BFu0i { int v1; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aI_Us_BFu0ll { int v1; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Us_BFu0s { int v1; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aI_Vp_BFu0c { int v1; void * v2; unsigned char :0; };
struct __attribute__((packed)) aI_Vp_BFu0i { int v1; void * v2; unsigned int :0; };
struct __attribute__((packed)) aI_Vp_BFu0ll { int v1; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aI_Vp_BFu0s { int v1; void * v2; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0c { int * v1; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu0c_BFu0c { int * v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu0c_BFu0i { int * v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu0c_BFu0ll { int * v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu0c_BFu0s { int * v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0c_BFu15i { int * v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aIp_BFu0c_BFu15ll { int * v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aIp_BFu0c_BFu15s { int * v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aIp_BFu0c_BFu16i { int * v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aIp_BFu0c_BFu16ll { int * v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aIp_BFu0c_BFu16s { int * v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aIp_BFu0c_BFu17i { int * v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aIp_BFu0c_BFu17ll { int * v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aIp_BFu0c_BFu1c { int * v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aIp_BFu0c_BFu1i { int * v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aIp_BFu0c_BFu1ll { int * v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aIp_BFu0c_BFu1s { int * v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aIp_BFu0c_BFu31i { int * v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aIp_BFu0c_BFu31ll { int * v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aIp_BFu0c_BFu32i { int * v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aIp_BFu0c_BFu32ll { int * v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aIp_BFu0c_BFu33 { int * v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aIp_BFu0c_BFu7c { int * v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aIp_BFu0c_BFu7i { int * v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aIp_BFu0c_BFu7ll { int * v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aIp_BFu0c_BFu7s { int * v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aIp_BFu0c_BFu8c { int * v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aIp_BFu0c_BFu8i { int * v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aIp_BFu0c_BFu8ll { int * v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aIp_BFu0c_BFu8s { int * v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aIp_BFu0c_BFu9i { int * v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aIp_BFu0c_BFu9ll { int * v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aIp_BFu0c_BFu9s { int * v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aIp_BFu0c_C { int * v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aIp_BFu0c_D { int * v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aIp_BFu0c_F { int * v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aIp_BFu0c_I { int * v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aIp_BFu0c_Ip { int * v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aIp_BFu0c_L { int * v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aIp_BFu0c_S { int * v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aIp_BFu0c_Uc { int * v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aIp_BFu0c_Ui { int * v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aIp_BFu0c_Ul { int * v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aIp_BFu0c_Us { int * v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aIp_BFu0c_Vp { int * v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aIp_BFu0i { int * v1; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu0i_BFu0c { int * v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu0i_BFu0i { int * v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu0i_BFu0ll { int * v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu0i_BFu0s { int * v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0i_BFu15i { int * v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aIp_BFu0i_BFu15ll { int * v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aIp_BFu0i_BFu15s { int * v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aIp_BFu0i_BFu16i { int * v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aIp_BFu0i_BFu16ll { int * v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aIp_BFu0i_BFu16s { int * v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aIp_BFu0i_BFu17i { int * v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aIp_BFu0i_BFu17ll { int * v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aIp_BFu0i_BFu1c { int * v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aIp_BFu0i_BFu1i { int * v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aIp_BFu0i_BFu1ll { int * v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aIp_BFu0i_BFu1s { int * v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aIp_BFu0i_BFu31i { int * v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aIp_BFu0i_BFu31ll { int * v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aIp_BFu0i_BFu32i { int * v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aIp_BFu0i_BFu32ll { int * v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aIp_BFu0i_BFu33 { int * v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aIp_BFu0i_BFu7c { int * v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aIp_BFu0i_BFu7i { int * v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aIp_BFu0i_BFu7ll { int * v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aIp_BFu0i_BFu7s { int * v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aIp_BFu0i_BFu8c { int * v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aIp_BFu0i_BFu8i { int * v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aIp_BFu0i_BFu8ll { int * v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aIp_BFu0i_BFu8s { int * v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aIp_BFu0i_BFu9i { int * v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aIp_BFu0i_BFu9ll { int * v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aIp_BFu0i_BFu9s { int * v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aIp_BFu0i_C { int * v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aIp_BFu0i_D { int * v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aIp_BFu0i_F { int * v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aIp_BFu0i_I { int * v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aIp_BFu0i_Ip { int * v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aIp_BFu0i_L { int * v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aIp_BFu0i_S { int * v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aIp_BFu0i_Uc { int * v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aIp_BFu0i_Ui { int * v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aIp_BFu0i_Ul { int * v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aIp_BFu0i_Us { int * v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aIp_BFu0i_Vp { int * v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aIp_BFu0ll { int * v1; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu0ll_BFu0c { int * v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu0ll_BFu0i { int * v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu0ll_BFu0ll { int * v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu0ll_BFu0s { int * v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0ll_BFu15i { int * v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aIp_BFu0ll_BFu15ll { int * v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aIp_BFu0ll_BFu15s { int * v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aIp_BFu0ll_BFu16i { int * v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aIp_BFu0ll_BFu16ll { int * v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aIp_BFu0ll_BFu16s { int * v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aIp_BFu0ll_BFu17i { int * v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aIp_BFu0ll_BFu17ll { int * v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aIp_BFu0ll_BFu1c { int * v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aIp_BFu0ll_BFu1i { int * v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aIp_BFu0ll_BFu1ll { int * v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aIp_BFu0ll_BFu1s { int * v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aIp_BFu0ll_BFu31i { int * v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aIp_BFu0ll_BFu31ll { int * v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aIp_BFu0ll_BFu32i { int * v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aIp_BFu0ll_BFu32ll { int * v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aIp_BFu0ll_BFu33 { int * v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aIp_BFu0ll_BFu7c { int * v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aIp_BFu0ll_BFu7i { int * v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aIp_BFu0ll_BFu7ll { int * v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aIp_BFu0ll_BFu7s { int * v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aIp_BFu0ll_BFu8c { int * v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aIp_BFu0ll_BFu8i { int * v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aIp_BFu0ll_BFu8ll { int * v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aIp_BFu0ll_BFu8s { int * v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aIp_BFu0ll_BFu9i { int * v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aIp_BFu0ll_BFu9ll { int * v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aIp_BFu0ll_BFu9s { int * v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aIp_BFu0ll_C { int * v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aIp_BFu0ll_D { int * v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aIp_BFu0ll_F { int * v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aIp_BFu0ll_I { int * v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aIp_BFu0ll_Ip { int * v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aIp_BFu0ll_L { int * v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aIp_BFu0ll_S { int * v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aIp_BFu0ll_Uc { int * v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aIp_BFu0ll_Ui { int * v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aIp_BFu0ll_Ul { int * v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aIp_BFu0ll_Us { int * v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aIp_BFu0ll_Vp { int * v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aIp_BFu0s { int * v1; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0s_BFu0c { int * v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu0s_BFu0i { int * v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu0s_BFu0ll { int * v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu0s_BFu0s { int * v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu0s_BFu15i { int * v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aIp_BFu0s_BFu15ll { int * v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aIp_BFu0s_BFu15s { int * v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aIp_BFu0s_BFu16i { int * v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aIp_BFu0s_BFu16ll { int * v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aIp_BFu0s_BFu16s { int * v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aIp_BFu0s_BFu17i { int * v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aIp_BFu0s_BFu17ll { int * v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aIp_BFu0s_BFu1c { int * v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aIp_BFu0s_BFu1i { int * v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aIp_BFu0s_BFu1ll { int * v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aIp_BFu0s_BFu1s { int * v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aIp_BFu0s_BFu31i { int * v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aIp_BFu0s_BFu31ll { int * v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aIp_BFu0s_BFu32i { int * v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aIp_BFu0s_BFu32ll { int * v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aIp_BFu0s_BFu33 { int * v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aIp_BFu0s_BFu7c { int * v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aIp_BFu0s_BFu7i { int * v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aIp_BFu0s_BFu7ll { int * v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aIp_BFu0s_BFu7s { int * v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aIp_BFu0s_BFu8c { int * v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aIp_BFu0s_BFu8i { int * v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aIp_BFu0s_BFu8ll { int * v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aIp_BFu0s_BFu8s { int * v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aIp_BFu0s_BFu9i { int * v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aIp_BFu0s_BFu9ll { int * v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aIp_BFu0s_BFu9s { int * v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aIp_BFu0s_C { int * v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aIp_BFu0s_D { int * v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aIp_BFu0s_F { int * v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aIp_BFu0s_I { int * v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aIp_BFu0s_Ip { int * v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aIp_BFu0s_L { int * v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aIp_BFu0s_S { int * v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aIp_BFu0s_Uc { int * v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aIp_BFu0s_Ui { int * v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aIp_BFu0s_Ul { int * v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aIp_BFu0s_Us { int * v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aIp_BFu0s_Vp { int * v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aIp_BFu15i_BFu0c { int * v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu15i_BFu0i { int * v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu15i_BFu0ll { int * v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu15i_BFu0s { int * v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu15ll_BFu0c { int * v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu15ll_BFu0i { int * v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu15ll_BFu0ll { int * v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu15ll_BFu0s { int * v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu15s_BFu0c { int * v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu15s_BFu0i { int * v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu15s_BFu0ll { int * v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu15s_BFu0s { int * v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu16i_BFu0c { int * v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu16i_BFu0i { int * v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu16i_BFu0ll { int * v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu16i_BFu0s { int * v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu16ll_BFu0c { int * v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu16ll_BFu0i { int * v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu16ll_BFu0ll { int * v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu16ll_BFu0s { int * v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu16s_BFu0c { int * v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu16s_BFu0i { int * v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu16s_BFu0ll { int * v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu16s_BFu0s { int * v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu17i_BFu0c { int * v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu17i_BFu0i { int * v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu17i_BFu0ll { int * v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu17i_BFu0s { int * v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu17ll_BFu0c { int * v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu17ll_BFu0i { int * v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu17ll_BFu0ll { int * v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu17ll_BFu0s { int * v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu1c_BFu0c { int * v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu1c_BFu0i { int * v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu1c_BFu0ll { int * v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu1c_BFu0s { int * v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu1i_BFu0c { int * v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu1i_BFu0i { int * v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu1i_BFu0ll { int * v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu1i_BFu0s { int * v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu1ll_BFu0c { int * v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu1ll_BFu0i { int * v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu1ll_BFu0ll { int * v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu1ll_BFu0s { int * v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu1s_BFu0c { int * v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu1s_BFu0i { int * v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu1s_BFu0ll { int * v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu1s_BFu0s { int * v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu31i_BFu0c { int * v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu31i_BFu0i { int * v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu31i_BFu0ll { int * v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu31i_BFu0s { int * v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu31ll_BFu0c { int * v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu31ll_BFu0i { int * v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu31ll_BFu0ll { int * v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu31ll_BFu0s { int * v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu32i_BFu0c { int * v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu32i_BFu0i { int * v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu32i_BFu0ll { int * v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu32i_BFu0s { int * v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu32ll_BFu0c { int * v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu32ll_BFu0i { int * v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu32ll_BFu0ll { int * v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu32ll_BFu0s { int * v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu33_BFu0c { int * v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu33_BFu0i { int * v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu33_BFu0ll { int * v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu33_BFu0s { int * v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu7c_BFu0c { int * v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu7c_BFu0i { int * v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu7c_BFu0ll { int * v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu7c_BFu0s { int * v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu7i_BFu0c { int * v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu7i_BFu0i { int * v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu7i_BFu0ll { int * v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu7i_BFu0s { int * v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu7ll_BFu0c { int * v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu7ll_BFu0i { int * v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu7ll_BFu0ll { int * v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu7ll_BFu0s { int * v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu7s_BFu0c { int * v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu7s_BFu0i { int * v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu7s_BFu0ll { int * v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu7s_BFu0s { int * v1; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu8c_BFu0c { int * v1; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu8c_BFu0i { int * v1; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu8c_BFu0ll { int * v1; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu8c_BFu0s { int * v1; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu8i_BFu0c { int * v1; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu8i_BFu0i { int * v1; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu8i_BFu0ll { int * v1; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu8i_BFu0s { int * v1; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu8ll_BFu0c { int * v1; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu8ll_BFu0i { int * v1; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu8ll_BFu0ll { int * v1; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu8ll_BFu0s { int * v1; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu8s_BFu0c { int * v1; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu8s_BFu0i { int * v1; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu8s_BFu0ll { int * v1; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu8s_BFu0s { int * v1; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu9i_BFu0c { int * v1; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu9i_BFu0i { int * v1; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu9i_BFu0ll { int * v1; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu9i_BFu0s { int * v1; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu9ll_BFu0c { int * v1; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu9ll_BFu0i { int * v1; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu9ll_BFu0ll { int * v1; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu9ll_BFu0s { int * v1; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aIp_BFu9s_BFu0c { int * v1; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aIp_BFu9s_BFu0i { int * v1; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aIp_BFu9s_BFu0ll { int * v1; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aIp_BFu9s_BFu0s { int * v1; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aIp_C_BFu0c { int * v1; char v2; unsigned char :0; };
struct __attribute__((packed)) aIp_C_BFu0i { int * v1; char v2; unsigned int :0; };
struct __attribute__((packed)) aIp_C_BFu0ll { int * v1; char v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_C_BFu0s { int * v1; char v2; unsigned short :0; };
struct __attribute__((packed)) aIp_D_BFu0c { int * v1; double v2; unsigned char :0; };
struct __attribute__((packed)) aIp_D_BFu0i { int * v1; double v2; unsigned int :0; };
struct __attribute__((packed)) aIp_D_BFu0ll { int * v1; double v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_D_BFu0s { int * v1; double v2; unsigned short :0; };
struct __attribute__((packed)) aIp_F_BFu0c { int * v1; float v2; unsigned char :0; };
struct __attribute__((packed)) aIp_F_BFu0i { int * v1; float v2; unsigned int :0; };
struct __attribute__((packed)) aIp_F_BFu0ll { int * v1; float v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_F_BFu0s { int * v1; float v2; unsigned short :0; };
struct __attribute__((packed)) aIp_I_BFu0c { int * v1; int v2; unsigned char :0; };
struct __attribute__((packed)) aIp_I_BFu0i { int * v1; int v2; unsigned int :0; };
struct __attribute__((packed)) aIp_I_BFu0ll { int * v1; int v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_I_BFu0s { int * v1; int v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Ip_BFu0c { int * v1; int * v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Ip_BFu0i { int * v1; int * v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Ip_BFu0ll { int * v1; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Ip_BFu0s { int * v1; int * v2; unsigned short :0; };
struct __attribute__((packed)) aIp_L_BFu0c { int * v1; long long v2; unsigned char :0; };
struct __attribute__((packed)) aIp_L_BFu0i { int * v1; long long v2; unsigned int :0; };
struct __attribute__((packed)) aIp_L_BFu0ll { int * v1; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_L_BFu0s { int * v1; long long v2; unsigned short :0; };
struct __attribute__((packed)) aIp_S_BFu0c { int * v1; short v2; unsigned char :0; };
struct __attribute__((packed)) aIp_S_BFu0i { int * v1; short v2; unsigned int :0; };
struct __attribute__((packed)) aIp_S_BFu0ll { int * v1; short v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_S_BFu0s { int * v1; short v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Uc_BFu0c { int * v1; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Uc_BFu0i { int * v1; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Uc_BFu0ll { int * v1; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Uc_BFu0s { int * v1; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Ui_BFu0c { int * v1; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Ui_BFu0i { int * v1; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Ui_BFu0ll { int * v1; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Ui_BFu0s { int * v1; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Ul_BFu0c { int * v1; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Ul_BFu0i { int * v1; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Ul_BFu0ll { int * v1; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Ul_BFu0s { int * v1; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Us_BFu0c { int * v1; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Us_BFu0i { int * v1; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Us_BFu0ll { int * v1; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Us_BFu0s { int * v1; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aIp_Vp_BFu0c { int * v1; void * v2; unsigned char :0; };
struct __attribute__((packed)) aIp_Vp_BFu0i { int * v1; void * v2; unsigned int :0; };
struct __attribute__((packed)) aIp_Vp_BFu0ll { int * v1; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aIp_Vp_BFu0s { int * v1; void * v2; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0c { long long v1; unsigned char :0; };
struct __attribute__((packed)) aL_BFu0c_BFu0c { long long v1; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aL_BFu0c_BFu0i { long long v1; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aL_BFu0c_BFu0ll { long long v1; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu0c_BFu0s { long long v1; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0c_BFu15i { long long v1; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aL_BFu0c_BFu15ll { long long v1; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aL_BFu0c_BFu15s { long long v1; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aL_BFu0c_BFu16i { long long v1; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aL_BFu0c_BFu16ll { long long v1; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aL_BFu0c_BFu16s { long long v1; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aL_BFu0c_BFu17i { long long v1; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aL_BFu0c_BFu17ll { long long v1; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aL_BFu0c_BFu1c { long long v1; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aL_BFu0c_BFu1i { long long v1; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aL_BFu0c_BFu1ll { long long v1; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aL_BFu0c_BFu1s { long long v1; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aL_BFu0c_BFu31i { long long v1; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aL_BFu0c_BFu31ll { long long v1; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aL_BFu0c_BFu32i { long long v1; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aL_BFu0c_BFu32ll { long long v1; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aL_BFu0c_BFu33 { long long v1; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aL_BFu0c_BFu7c { long long v1; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aL_BFu0c_BFu7i { long long v1; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aL_BFu0c_BFu7ll { long long v1; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aL_BFu0c_BFu7s { long long v1; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aL_BFu0c_BFu8c { long long v1; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aL_BFu0c_BFu8i { long long v1; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aL_BFu0c_BFu8ll { long long v1; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aL_BFu0c_BFu8s { long long v1; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aL_BFu0c_BFu9i { long long v1; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aL_BFu0c_BFu9ll { long long v1; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aL_BFu0c_BFu9s { long long v1; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aL_BFu0c_C { long long v1; unsigned char :0; char v2; };
struct __attribute__((packed)) aL_BFu0c_D { long long v1; unsigned char :0; double v2; };
struct __attribute__((packed)) aL_BFu0c_F { long long v1; unsigned char :0; float v2; };
struct __attribute__((packed)) aL_BFu0c_I { long long v1; unsigned char :0; int v2; };
struct __attribute__((packed)) aL_BFu0c_Ip { long long v1; unsigned char :0; int * v2; };
struct __attribute__((packed)) aL_BFu0c_L { long long v1; unsigned char :0; long long v2; };
struct __attribute__((packed)) aL_BFu0c_S { long long v1; unsigned char :0; short v2; };
struct __attribute__((packed)) aL_BFu0c_Uc { long long v1; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aL_BFu0c_Ui { long long v1; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aL_BFu0c_Ul { long long v1; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aL_BFu0c_Us { long long v1; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aL_BFu0c_Vp { long long v1; unsigned char :0; void * v2; };
struct __attribute__((packed)) aL_BFu0i { long long v1; unsigned int :0; };
struct __attribute__((packed)) aL_BFu0i_BFu0c { long long v1; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aL_BFu0i_BFu0i { long long v1; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aL_BFu0i_BFu0ll { long long v1; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu0i_BFu0s { long long v1; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0i_BFu15i { long long v1; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aL_BFu0i_BFu15ll { long long v1; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aL_BFu0i_BFu15s { long long v1; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aL_BFu0i_BFu16i { long long v1; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aL_BFu0i_BFu16ll { long long v1; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aL_BFu0i_BFu16s { long long v1; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aL_BFu0i_BFu17i { long long v1; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aL_BFu0i_BFu17ll { long long v1; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aL_BFu0i_BFu1c { long long v1; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aL_BFu0i_BFu1i { long long v1; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aL_BFu0i_BFu1ll { long long v1; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aL_BFu0i_BFu1s { long long v1; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aL_BFu0i_BFu31i { long long v1; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aL_BFu0i_BFu31ll { long long v1; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aL_BFu0i_BFu32i { long long v1; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aL_BFu0i_BFu32ll { long long v1; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aL_BFu0i_BFu33 { long long v1; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aL_BFu0i_BFu7c { long long v1; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aL_BFu0i_BFu7i { long long v1; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aL_BFu0i_BFu7ll { long long v1; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aL_BFu0i_BFu7s { long long v1; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aL_BFu0i_BFu8c { long long v1; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aL_BFu0i_BFu8i { long long v1; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aL_BFu0i_BFu8ll { long long v1; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aL_BFu0i_BFu8s { long long v1; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aL_BFu0i_BFu9i { long long v1; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aL_BFu0i_BFu9ll { long long v1; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aL_BFu0i_BFu9s { long long v1; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aL_BFu0i_C { long long v1; unsigned int :0; char v2; };
struct __attribute__((packed)) aL_BFu0i_D { long long v1; unsigned int :0; double v2; };
struct __attribute__((packed)) aL_BFu0i_F { long long v1; unsigned int :0; float v2; };
struct __attribute__((packed)) aL_BFu0i_I { long long v1; unsigned int :0; int v2; };
struct __attribute__((packed)) aL_BFu0i_Ip { long long v1; unsigned int :0; int * v2; };
struct __attribute__((packed)) aL_BFu0i_L { long long v1; unsigned int :0; long long v2; };
struct __attribute__((packed)) aL_BFu0i_S { long long v1; unsigned int :0; short v2; };
struct __attribute__((packed)) aL_BFu0i_Uc { long long v1; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aL_BFu0i_Ui { long long v1; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aL_BFu0i_Ul { long long v1; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aL_BFu0i_Us { long long v1; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aL_BFu0i_Vp { long long v1; unsigned int :0; void * v2; };
struct __attribute__((packed)) aL_BFu0ll { long long v1; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu0ll_BFu0c { long long v1; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aL_BFu0ll_BFu0i { long long v1; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aL_BFu0ll_BFu0ll { long long v1; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu0ll_BFu0s { long long v1; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0ll_BFu15i { long long v1; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aL_BFu0ll_BFu15ll { long long v1; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aL_BFu0ll_BFu15s { long long v1; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aL_BFu0ll_BFu16i { long long v1; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aL_BFu0ll_BFu16ll { long long v1; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aL_BFu0ll_BFu16s { long long v1; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aL_BFu0ll_BFu17i { long long v1; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aL_BFu0ll_BFu17ll { long long v1; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aL_BFu0ll_BFu1c { long long v1; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aL_BFu0ll_BFu1i { long long v1; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aL_BFu0ll_BFu1ll { long long v1; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aL_BFu0ll_BFu1s { long long v1; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aL_BFu0ll_BFu31i { long long v1; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aL_BFu0ll_BFu31ll { long long v1; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aL_BFu0ll_BFu32i { long long v1; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aL_BFu0ll_BFu32ll { long long v1; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aL_BFu0ll_BFu33 { long long v1; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aL_BFu0ll_BFu7c { long long v1; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aL_BFu0ll_BFu7i { long long v1; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aL_BFu0ll_BFu7ll { long long v1; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aL_BFu0ll_BFu7s { long long v1; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aL_BFu0ll_BFu8c { long long v1; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aL_BFu0ll_BFu8i { long long v1; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aL_BFu0ll_BFu8ll { long long v1; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aL_BFu0ll_BFu8s { long long v1; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aL_BFu0ll_BFu9i { long long v1; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aL_BFu0ll_BFu9ll { long long v1; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aL_BFu0ll_BFu9s { long long v1; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aL_BFu0ll_C { long long v1; unsigned long long :0; char v2; };
struct __attribute__((packed)) aL_BFu0ll_D { long long v1; unsigned long long :0; double v2; };
struct __attribute__((packed)) aL_BFu0ll_F { long long v1; unsigned long long :0; float v2; };
struct __attribute__((packed)) aL_BFu0ll_I { long long v1; unsigned long long :0; int v2; };
struct __attribute__((packed)) aL_BFu0ll_Ip { long long v1; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aL_BFu0ll_L { long long v1; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aL_BFu0ll_S { long long v1; unsigned long long :0; short v2; };
struct __attribute__((packed)) aL_BFu0ll_Uc { long long v1; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aL_BFu0ll_Ui { long long v1; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aL_BFu0ll_Ul { long long v1; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aL_BFu0ll_Us { long long v1; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aL_BFu0ll_Vp { long long v1; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aL_BFu0s { long long v1; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0s_BFu0c { long long v1; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aL_BFu0s_BFu0i { long long v1; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aL_BFu0s_BFu0ll { long long v1; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu0s_BFu0s { long long v1; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aL_BFu0s_BFu15i { long long v1; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aL_BFu0s_BFu15ll { long long v1; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aL_BFu0s_BFu15s { long long v1; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aL_BFu0s_BFu16i { long long v1; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aL_BFu0s_BFu16ll { long long v1; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aL_BFu0s_BFu16s { long long v1; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aL_BFu0s_BFu17i { long long v1; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aL_BFu0s_BFu17ll { long long v1; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aL_BFu0s_BFu1c { long long v1; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aL_BFu0s_BFu1i { long long v1; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aL_BFu0s_BFu1ll { long long v1; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aL_BFu0s_BFu1s { long long v1; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aL_BFu0s_BFu31i { long long v1; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aL_BFu0s_BFu31ll { long long v1; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aL_BFu0s_BFu32i { long long v1; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aL_BFu0s_BFu32ll { long long v1; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aL_BFu0s_BFu33 { long long v1; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aL_BFu0s_BFu7c { long long v1; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aL_BFu0s_BFu7i { long long v1; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aL_BFu0s_BFu7ll { long long v1; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aL_BFu0s_BFu7s { long long v1; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aL_BFu0s_BFu8c { long long v1; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aL_BFu0s_BFu8i { long long v1; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aL_BFu0s_BFu8ll { long long v1; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aL_BFu0s_BFu8s { long long v1; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aL_BFu0s_BFu9i { long long v1; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aL_BFu0s_BFu9ll { long long v1; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aL_BFu0s_BFu9s { long long v1; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aL_BFu0s_C { long long v1; unsigned short :0; char v2; };
struct __attribute__((packed)) aL_BFu0s_D { long long v1; unsigned short :0; double v2; };
struct __attribute__((packed)) aL_BFu0s_F { long long v1; unsigned short :0; float v2; };
struct __attribute__((packed)) aL_BFu0s_I { long long v1; unsigned short :0; int v2; };
struct __attribute__((packed)) aL_BFu0s_Ip { long long v1; unsigned short :0; int * v2; };
struct __attribute__((packed)) aL_BFu0s_L { long long v1; unsigned short :0; long long v2; };
struct __attribute__((packed)) aL_BFu0s_S { long long v1; unsigned short :0; short v2; };
struct __attribute__((packed)) aL_BFu0s_Uc { long long v1; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aL_BFu0s_Ui { long long v1; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aL_BFu0s_Ul { long long v1; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aL_BFu0s_Us { long long v1; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aL_BFu0s_Vp { long long v1; unsigned short :0; void * v2; };
struct __attribute__((packed)) aL_BFu15i_BFu0c { long long v1; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aL_BFu15i_BFu0i { long long v1; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aL_BFu15i_BFu0ll { long long v1; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu15i_BFu0s { long long v1; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aL_BFu15ll_BFu0c { long long v1; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aL_BFu15ll_BFu0i { long long v1; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aL_BFu15ll_BFu0ll { long long v1; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu15ll_BFu0s { long long v1; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aL_BFu15s_BFu0c { long long v1; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aL_BFu15s_BFu0i { long long v1; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aL_BFu15s_BFu0ll { long long v1; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu15s_BFu0s { long long v1; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aL_BFu16i_BFu0c { long long v1; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aL_BFu16i_BFu0i { long long v1; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aL_BFu16i_BFu0ll { long long v1; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu16i_BFu0s { long long v1; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aL_BFu16ll_BFu0c { long long v1; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aL_BFu16ll_BFu0i { long long v1; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aL_BFu16ll_BFu0ll { long long v1; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu16ll_BFu0s { long long v1; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aL_BFu16s_BFu0c { long long v1; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aL_BFu16s_BFu0i { long long v1; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aL_BFu16s_BFu0ll { long long v1; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu16s_BFu0s { long long v1; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aL_BFu17i_BFu0c { long long v1; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aL_BFu17i_BFu0i { long long v1; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aL_BFu17i_BFu0ll { long long v1; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu17i_BFu0s { long long v1; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aL_BFu17ll_BFu0c { long long v1; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aL_BFu17ll_BFu0i { long long v1; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aL_BFu17ll_BFu0ll { long long v1; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu17ll_BFu0s { long long v1; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aL_BFu1c_BFu0c { long long v1; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aL_BFu1c_BFu0i { long long v1; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aL_BFu1c_BFu0ll { long long v1; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu1c_BFu0s { long long v1; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aL_BFu1i_BFu0c { long long v1; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aL_BFu1i_BFu0i { long long v1; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aL_BFu1i_BFu0ll { long long v1; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu1i_BFu0s { long long v1; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aL_BFu1ll_BFu0c { long long v1; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aL_BFu1ll_BFu0i { long long v1; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aL_BFu1ll_BFu0ll { long long v1; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu1ll_BFu0s { long long v1; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aL_BFu1s_BFu0c { long long v1; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aL_BFu1s_BFu0i { long long v1; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aL_BFu1s_BFu0ll { long long v1; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu1s_BFu0s { long long v1; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aL_BFu31i_BFu0c { long long v1; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aL_BFu31i_BFu0i { long long v1; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aL_BFu31i_BFu0ll { long long v1; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu31i_BFu0s { long long v1; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aL_BFu31ll_BFu0c { long long v1; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aL_BFu31ll_BFu0i { long long v1; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aL_BFu31ll_BFu0ll { long long v1; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu31ll_BFu0s { long long v1; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aL_BFu32i_BFu0c { long long v1; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aL_BFu32i_BFu0i { long long v1; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aL_BFu32i_BFu0ll { long long v1; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu32i_BFu0s { long long v1; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aL_BFu32ll_BFu0c { long long v1; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aL_BFu32ll_BFu0i { long long v1; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aL_BFu32ll_BFu0ll { long long v1; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu32ll_BFu0s { long long v1; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aL_BFu33_BFu0c { long long v1; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aL_BFu33_BFu0i { long long v1; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aL_BFu33_BFu0ll { long long v1; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu33_BFu0s { long long v1; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aL_BFu7c_BFu0c { long long v1; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aL_BFu7c_BFu0i { long long v1; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aL_BFu7c_BFu0ll { long long v1; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu7c_BFu0s { long long v1; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aL_BFu7i_BFu0c { long long v1; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aL_BFu7i_BFu0i { long long v1; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aL_BFu7i_BFu0ll { long long v1; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu7i_BFu0s { long long v1; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aL_BFu7ll_BFu0c { long long v1; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aL_BFu7ll_BFu0i { long long v1; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aL_BFu7ll_BFu0ll { long long v1; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu7ll_BFu0s { long long v1; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aL_BFu7s_BFu0c { long long v1; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aL_BFu7s_BFu0i { long long v1; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aL_BFu7s_BFu0ll { long long v1; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aL_BFu7s_BFu0s { long long v1; unsigned short v2:7; unsigned short :0; };
#endif // __cplusplus
#ifdef __cplusplus


static void Test_aBFu8s_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8s_Ui_BFu0c");
    static aBFu8s_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ui_BFu0c(Test_aBFu8s_Ui_BFu0c, "aBFu8s_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8s_Ui_BFu0i");
    static aBFu8s_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ui_BFu0i(Test_aBFu8s_Ui_BFu0i, "aBFu8s_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Ui_BFu0ll");
    static aBFu8s_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ui_BFu0ll(Test_aBFu8s_Ui_BFu0ll, "aBFu8s_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8s_Ui_BFu0s");
    static aBFu8s_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ui_BFu0s(Test_aBFu8s_Ui_BFu0s, "aBFu8s_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8s_Ul_BFu0c");
    static aBFu8s_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ul_BFu0c(Test_aBFu8s_Ul_BFu0c, "aBFu8s_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8s_Ul_BFu0i");
    static aBFu8s_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ul_BFu0i(Test_aBFu8s_Ul_BFu0i, "aBFu8s_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Ul_BFu0ll");
    static aBFu8s_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ul_BFu0ll(Test_aBFu8s_Ul_BFu0ll, "aBFu8s_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8s_Ul_BFu0s");
    static aBFu8s_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ul_BFu0s(Test_aBFu8s_Ul_BFu0s, "aBFu8s_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Us_BFu0c()
{
  {
    init_simple_test("aBFu8s_Us_BFu0c");
    static aBFu8s_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Us_BFu0c(Test_aBFu8s_Us_BFu0c, "aBFu8s_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Us_BFu0i()
{
  {
    init_simple_test("aBFu8s_Us_BFu0i");
    static aBFu8s_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Us_BFu0i(Test_aBFu8s_Us_BFu0i, "aBFu8s_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Us_BFu0ll");
    static aBFu8s_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Us_BFu0ll(Test_aBFu8s_Us_BFu0ll, "aBFu8s_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Us_BFu0s()
{
  {
    init_simple_test("aBFu8s_Us_BFu0s");
    static aBFu8s_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Us_BFu0s(Test_aBFu8s_Us_BFu0s, "aBFu8s_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8s_Vp_BFu0c");
    static aBFu8s_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Vp_BFu0c(Test_aBFu8s_Vp_BFu0c, "aBFu8s_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8s_Vp_BFu0i");
    static aBFu8s_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Vp_BFu0i(Test_aBFu8s_Vp_BFu0i, "aBFu8s_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Vp_BFu0ll");
    static aBFu8s_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Vp_BFu0ll(Test_aBFu8s_Vp_BFu0ll, "aBFu8s_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu8s_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8s_Vp_BFu0s");
    static aBFu8s_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Vp_BFu0s(Test_aBFu8s_Vp_BFu0s, "aBFu8s_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu0c");
    static aBFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c(Test_aBFu9i_BFu0c, "aBFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu0c");
    static aBFu9i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu0c(Test_aBFu9i_BFu0c_BFu0c, "aBFu9i_BFu0c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu0i");
    static aBFu9i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu0i(Test_aBFu9i_BFu0c_BFu0i, "aBFu9i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu0ll");
    static aBFu9i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu0ll(Test_aBFu9i_BFu0c_BFu0ll, "aBFu9i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu0s");
    static aBFu9i_BFu0c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu0s(Test_aBFu9i_BFu0c_BFu0s, "aBFu9i_BFu0c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu15i");
    static aBFu9i_BFu0c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu15i(Test_aBFu9i_BFu0c_BFu15i, "aBFu9i_BFu0c_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu15ll");
    static aBFu9i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu15ll(Test_aBFu9i_BFu0c_BFu15ll, "aBFu9i_BFu0c_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu15s");
    static aBFu9i_BFu0c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu15s(Test_aBFu9i_BFu0c_BFu15s, "aBFu9i_BFu0c_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu16i");
    static aBFu9i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu16i(Test_aBFu9i_BFu0c_BFu16i, "aBFu9i_BFu0c_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu16ll");
    static aBFu9i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu16ll(Test_aBFu9i_BFu0c_BFu16ll, "aBFu9i_BFu0c_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu16s");
    static aBFu9i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu16s(Test_aBFu9i_BFu0c_BFu16s, "aBFu9i_BFu0c_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu17i");
    static aBFu9i_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu17i(Test_aBFu9i_BFu0c_BFu17i, "aBFu9i_BFu0c_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu17ll");
    static aBFu9i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu17ll(Test_aBFu9i_BFu0c_BFu17ll, "aBFu9i_BFu0c_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu1c");
    static aBFu9i_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu1c(Test_aBFu9i_BFu0c_BFu1c, "aBFu9i_BFu0c_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu1i");
    static aBFu9i_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu1i(Test_aBFu9i_BFu0c_BFu1i, "aBFu9i_BFu0c_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu1ll");
    static aBFu9i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu1ll(Test_aBFu9i_BFu0c_BFu1ll, "aBFu9i_BFu0c_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu1s");
    static aBFu9i_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu1s(Test_aBFu9i_BFu0c_BFu1s, "aBFu9i_BFu0c_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu31i");
    static aBFu9i_BFu0c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu31i(Test_aBFu9i_BFu0c_BFu31i, "aBFu9i_BFu0c_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu31ll");
    static aBFu9i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu31ll(Test_aBFu9i_BFu0c_BFu31ll, "aBFu9i_BFu0c_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu32i");
    static aBFu9i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu32i(Test_aBFu9i_BFu0c_BFu32i, "aBFu9i_BFu0c_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu32ll");
    static aBFu9i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu32ll(Test_aBFu9i_BFu0c_BFu32ll, "aBFu9i_BFu0c_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu33");
    static aBFu9i_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu33(Test_aBFu9i_BFu0c_BFu33, "aBFu9i_BFu0c_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu7c");
    static aBFu9i_BFu0c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu7c(Test_aBFu9i_BFu0c_BFu7c, "aBFu9i_BFu0c_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu7i");
    static aBFu9i_BFu0c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu7i(Test_aBFu9i_BFu0c_BFu7i, "aBFu9i_BFu0c_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu7ll");
    static aBFu9i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu7ll(Test_aBFu9i_BFu0c_BFu7ll, "aBFu9i_BFu0c_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu7s");
    static aBFu9i_BFu0c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu7s(Test_aBFu9i_BFu0c_BFu7s, "aBFu9i_BFu0c_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu8c");
    static aBFu9i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu8c(Test_aBFu9i_BFu0c_BFu8c, "aBFu9i_BFu0c_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu8i");
    static aBFu9i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu8i(Test_aBFu9i_BFu0c_BFu8i, "aBFu9i_BFu0c_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu8ll");
    static aBFu9i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu8ll(Test_aBFu9i_BFu0c_BFu8ll, "aBFu9i_BFu0c_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu8s");
    static aBFu9i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu8s(Test_aBFu9i_BFu0c_BFu8s, "aBFu9i_BFu0c_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu9i");
    static aBFu9i_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu9i(Test_aBFu9i_BFu0c_BFu9i, "aBFu9i_BFu0c_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu9ll");
    static aBFu9i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu9ll(Test_aBFu9i_BFu0c_BFu9ll, "aBFu9i_BFu0c_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu9i_BFu0c_BFu9s");
    static aBFu9i_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_BFu9s(Test_aBFu9i_BFu0c_BFu9s, "aBFu9i_BFu0c_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_C()
{
  {
    init_simple_test("aBFu9i_BFu0c_C");
    static aBFu9i_BFu0c_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_C");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_C(Test_aBFu9i_BFu0c_C, "aBFu9i_BFu0c_C", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_D()
{
  {
    init_simple_test("aBFu9i_BFu0c_D");
    static aBFu9i_BFu0c_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_D");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_D(Test_aBFu9i_BFu0c_D, "aBFu9i_BFu0c_D", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_F()
{
  {
    init_simple_test("aBFu9i_BFu0c_F");
    static aBFu9i_BFu0c_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_F");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_F(Test_aBFu9i_BFu0c_F, "aBFu9i_BFu0c_F", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_I()
{
  {
    init_simple_test("aBFu9i_BFu0c_I");
    static aBFu9i_BFu0c_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_I");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_I(Test_aBFu9i_BFu0c_I, "aBFu9i_BFu0c_I", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Ip()
{
  {
    init_simple_test("aBFu9i_BFu0c_Ip");
    static aBFu9i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Ip");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Ip(Test_aBFu9i_BFu0c_Ip, "aBFu9i_BFu0c_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_L()
{
  {
    init_simple_test("aBFu9i_BFu0c_L");
    static aBFu9i_BFu0c_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_L");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_L(Test_aBFu9i_BFu0c_L, "aBFu9i_BFu0c_L", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_S()
{
  {
    init_simple_test("aBFu9i_BFu0c_S");
    static aBFu9i_BFu0c_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_S");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_S(Test_aBFu9i_BFu0c_S, "aBFu9i_BFu0c_S", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Uc()
{
  {
    init_simple_test("aBFu9i_BFu0c_Uc");
    static aBFu9i_BFu0c_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Uc");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Uc(Test_aBFu9i_BFu0c_Uc, "aBFu9i_BFu0c_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Ui()
{
  {
    init_simple_test("aBFu9i_BFu0c_Ui");
    static aBFu9i_BFu0c_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Ui");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Ui(Test_aBFu9i_BFu0c_Ui, "aBFu9i_BFu0c_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Ul()
{
  {
    init_simple_test("aBFu9i_BFu0c_Ul");
    static aBFu9i_BFu0c_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Ul");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Ul(Test_aBFu9i_BFu0c_Ul, "aBFu9i_BFu0c_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Us()
{
  {
    init_simple_test("aBFu9i_BFu0c_Us");
    static aBFu9i_BFu0c_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Us");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Us(Test_aBFu9i_BFu0c_Us, "aBFu9i_BFu0c_Us", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0c_Vp()
{
  {
    init_simple_test("aBFu9i_BFu0c_Vp");
    static aBFu9i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0c_Vp");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0c_Vp(Test_aBFu9i_BFu0c_Vp, "aBFu9i_BFu0c_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu0i");
    static aBFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i(Test_aBFu9i_BFu0i, "aBFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu0c");
    static aBFu9i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu0c(Test_aBFu9i_BFu0i_BFu0c, "aBFu9i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu0i");
    static aBFu9i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu0i(Test_aBFu9i_BFu0i_BFu0i, "aBFu9i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu0ll");
    static aBFu9i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu0ll(Test_aBFu9i_BFu0i_BFu0ll, "aBFu9i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu0s");
    static aBFu9i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu0s(Test_aBFu9i_BFu0i_BFu0s, "aBFu9i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu15i");
    static aBFu9i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu15i(Test_aBFu9i_BFu0i_BFu15i, "aBFu9i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu15ll");
    static aBFu9i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu15ll(Test_aBFu9i_BFu0i_BFu15ll, "aBFu9i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu15s");
    static aBFu9i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu15s(Test_aBFu9i_BFu0i_BFu15s, "aBFu9i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu16i");
    static aBFu9i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu16i(Test_aBFu9i_BFu0i_BFu16i, "aBFu9i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu16ll");
    static aBFu9i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu16ll(Test_aBFu9i_BFu0i_BFu16ll, "aBFu9i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu16s");
    static aBFu9i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu16s(Test_aBFu9i_BFu0i_BFu16s, "aBFu9i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu17i");
    static aBFu9i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9i_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu17i(Test_aBFu9i_BFu0i_BFu17i, "aBFu9i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu17ll");
    static aBFu9i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu17ll(Test_aBFu9i_BFu0i_BFu17ll, "aBFu9i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu1c");
    static aBFu9i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu1c(Test_aBFu9i_BFu0i_BFu1c, "aBFu9i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu1i");
    static aBFu9i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu1i(Test_aBFu9i_BFu0i_BFu1i, "aBFu9i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu1ll");
    static aBFu9i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu1ll(Test_aBFu9i_BFu0i_BFu1ll, "aBFu9i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu1s");
    static aBFu9i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu1s(Test_aBFu9i_BFu0i_BFu1s, "aBFu9i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu31i");
    static aBFu9i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu31i(Test_aBFu9i_BFu0i_BFu31i, "aBFu9i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu31ll");
    static aBFu9i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu31ll(Test_aBFu9i_BFu0i_BFu31ll, "aBFu9i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu32i");
    static aBFu9i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu32i(Test_aBFu9i_BFu0i_BFu32i, "aBFu9i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu32ll");
    static aBFu9i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu32ll(Test_aBFu9i_BFu0i_BFu32ll, "aBFu9i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu33");
    static aBFu9i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu9i_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu9i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu33(Test_aBFu9i_BFu0i_BFu33, "aBFu9i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu7c");
    static aBFu9i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu7c(Test_aBFu9i_BFu0i_BFu7c, "aBFu9i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu7i");
    static aBFu9i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu7i(Test_aBFu9i_BFu0i_BFu7i, "aBFu9i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu7ll");
    static aBFu9i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu7ll(Test_aBFu9i_BFu0i_BFu7ll, "aBFu9i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu7s");
    static aBFu9i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu7s(Test_aBFu9i_BFu0i_BFu7s, "aBFu9i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu8c");
    static aBFu9i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu8c(Test_aBFu9i_BFu0i_BFu8c, "aBFu9i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu8i");
    static aBFu9i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu8i(Test_aBFu9i_BFu0i_BFu8i, "aBFu9i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu8ll");
    static aBFu9i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu8ll(Test_aBFu9i_BFu0i_BFu8ll, "aBFu9i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu8s");
    static aBFu9i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu8s(Test_aBFu9i_BFu0i_BFu8s, "aBFu9i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu9i");
    static aBFu9i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu9i(Test_aBFu9i_BFu0i_BFu9i, "aBFu9i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu9ll");
    static aBFu9i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu9ll(Test_aBFu9i_BFu0i_BFu9ll, "aBFu9i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu9i_BFu0i_BFu9s");
    static aBFu9i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_BFu9s(Test_aBFu9i_BFu0i_BFu9s, "aBFu9i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_C()
{
  {
    init_simple_test("aBFu9i_BFu0i_C");
    static aBFu9i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_C(Test_aBFu9i_BFu0i_C, "aBFu9i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_D()
{
  {
    init_simple_test("aBFu9i_BFu0i_D");
    static aBFu9i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_D(Test_aBFu9i_BFu0i_D, "aBFu9i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_F()
{
  {
    init_simple_test("aBFu9i_BFu0i_F");
    static aBFu9i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_F(Test_aBFu9i_BFu0i_F, "aBFu9i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_I()
{
  {
    init_simple_test("aBFu9i_BFu0i_I");
    static aBFu9i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_I(Test_aBFu9i_BFu0i_I, "aBFu9i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Ip()
{
  {
    init_simple_test("aBFu9i_BFu0i_Ip");
    static aBFu9i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Ip(Test_aBFu9i_BFu0i_Ip, "aBFu9i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_L()
{
  {
    init_simple_test("aBFu9i_BFu0i_L");
    static aBFu9i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_L(Test_aBFu9i_BFu0i_L, "aBFu9i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_S()
{
  {
    init_simple_test("aBFu9i_BFu0i_S");
    static aBFu9i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_S(Test_aBFu9i_BFu0i_S, "aBFu9i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Uc()
{
  {
    init_simple_test("aBFu9i_BFu0i_Uc");
    static aBFu9i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Uc(Test_aBFu9i_BFu0i_Uc, "aBFu9i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Ui()
{
  {
    init_simple_test("aBFu9i_BFu0i_Ui");
    static aBFu9i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Ui(Test_aBFu9i_BFu0i_Ui, "aBFu9i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Ul()
{
  {
    init_simple_test("aBFu9i_BFu0i_Ul");
    static aBFu9i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Ul(Test_aBFu9i_BFu0i_Ul, "aBFu9i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Us()
{
  {
    init_simple_test("aBFu9i_BFu0i_Us");
    static aBFu9i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Us(Test_aBFu9i_BFu0i_Us, "aBFu9i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0i_Vp()
{
  {
    init_simple_test("aBFu9i_BFu0i_Vp");
    static aBFu9i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0i_Vp(Test_aBFu9i_BFu0i_Vp, "aBFu9i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll");
    static aBFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll(Test_aBFu9i_BFu0ll, "aBFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu0c");
    static aBFu9i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu0c(Test_aBFu9i_BFu0ll_BFu0c, "aBFu9i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu0i");
    static aBFu9i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu0i(Test_aBFu9i_BFu0ll_BFu0i, "aBFu9i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu0ll");
    static aBFu9i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu0ll(Test_aBFu9i_BFu0ll_BFu0ll, "aBFu9i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu0s");
    static aBFu9i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu0s(Test_aBFu9i_BFu0ll_BFu0s, "aBFu9i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu15i");
    static aBFu9i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu15i(Test_aBFu9i_BFu0ll_BFu15i, "aBFu9i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu15ll");
    static aBFu9i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu15ll(Test_aBFu9i_BFu0ll_BFu15ll, "aBFu9i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu15s");
    static aBFu9i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu15s(Test_aBFu9i_BFu0ll_BFu15s, "aBFu9i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu16i");
    static aBFu9i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu16i(Test_aBFu9i_BFu0ll_BFu16i, "aBFu9i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu16ll");
    static aBFu9i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu16ll(Test_aBFu9i_BFu0ll_BFu16ll, "aBFu9i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu16s");
    static aBFu9i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu16s(Test_aBFu9i_BFu0ll_BFu16s, "aBFu9i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu17i");
    static aBFu9i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu17i(Test_aBFu9i_BFu0ll_BFu17i, "aBFu9i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu17ll");
    static aBFu9i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu17ll(Test_aBFu9i_BFu0ll_BFu17ll, "aBFu9i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu1c");
    static aBFu9i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu1c(Test_aBFu9i_BFu0ll_BFu1c, "aBFu9i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu1i");
    static aBFu9i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu1i(Test_aBFu9i_BFu0ll_BFu1i, "aBFu9i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu1ll");
    static aBFu9i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu1ll(Test_aBFu9i_BFu0ll_BFu1ll, "aBFu9i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu1s");
    static aBFu9i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu1s(Test_aBFu9i_BFu0ll_BFu1s, "aBFu9i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu31i");
    static aBFu9i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu31i(Test_aBFu9i_BFu0ll_BFu31i, "aBFu9i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu31ll");
    static aBFu9i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu31ll(Test_aBFu9i_BFu0ll_BFu31ll, "aBFu9i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu32i");
    static aBFu9i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu32i(Test_aBFu9i_BFu0ll_BFu32i, "aBFu9i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu32ll");
    static aBFu9i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu32ll(Test_aBFu9i_BFu0ll_BFu32ll, "aBFu9i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu33");
    static aBFu9i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu9i_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu9i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu33(Test_aBFu9i_BFu0ll_BFu33, "aBFu9i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu7c");
    static aBFu9i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu7c(Test_aBFu9i_BFu0ll_BFu7c, "aBFu9i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu7i");
    static aBFu9i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu7i(Test_aBFu9i_BFu0ll_BFu7i, "aBFu9i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu7ll");
    static aBFu9i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu7ll(Test_aBFu9i_BFu0ll_BFu7ll, "aBFu9i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu7s");
    static aBFu9i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu7s(Test_aBFu9i_BFu0ll_BFu7s, "aBFu9i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu8c");
    static aBFu9i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu8c(Test_aBFu9i_BFu0ll_BFu8c, "aBFu9i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu8i");
    static aBFu9i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu8i(Test_aBFu9i_BFu0ll_BFu8i, "aBFu9i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu8ll");
    static aBFu9i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu8ll(Test_aBFu9i_BFu0ll_BFu8ll, "aBFu9i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu8s");
    static aBFu9i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu8s(Test_aBFu9i_BFu0ll_BFu8s, "aBFu9i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu9i");
    static aBFu9i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu9i(Test_aBFu9i_BFu0ll_BFu9i, "aBFu9i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu9ll");
    static aBFu9i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu9ll(Test_aBFu9i_BFu0ll_BFu9ll, "aBFu9i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu9i_BFu0ll_BFu9s");
    static aBFu9i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_BFu9s(Test_aBFu9i_BFu0ll_BFu9s, "aBFu9i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_C()
{
  {
    init_simple_test("aBFu9i_BFu0ll_C");
    static aBFu9i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_C(Test_aBFu9i_BFu0ll_C, "aBFu9i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_D()
{
  {
    init_simple_test("aBFu9i_BFu0ll_D");
    static aBFu9i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_D(Test_aBFu9i_BFu0ll_D, "aBFu9i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_F()
{
  {
    init_simple_test("aBFu9i_BFu0ll_F");
    static aBFu9i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_F(Test_aBFu9i_BFu0ll_F, "aBFu9i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_I()
{
  {
    init_simple_test("aBFu9i_BFu0ll_I");
    static aBFu9i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_I(Test_aBFu9i_BFu0ll_I, "aBFu9i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Ip");
    static aBFu9i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9i_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Ip(Test_aBFu9i_BFu0ll_Ip, "aBFu9i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_L()
{
  {
    init_simple_test("aBFu9i_BFu0ll_L");
    static aBFu9i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_L(Test_aBFu9i_BFu0ll_L, "aBFu9i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_S()
{
  {
    init_simple_test("aBFu9i_BFu0ll_S");
    static aBFu9i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_S(Test_aBFu9i_BFu0ll_S, "aBFu9i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Uc");
    static aBFu9i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9i_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Uc(Test_aBFu9i_BFu0ll_Uc, "aBFu9i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Ui");
    static aBFu9i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Ui(Test_aBFu9i_BFu0ll_Ui, "aBFu9i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Ul");
    static aBFu9i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Ul(Test_aBFu9i_BFu0ll_Ul, "aBFu9i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Us()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Us");
    static aBFu9i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Us(Test_aBFu9i_BFu0ll_Us, "aBFu9i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu9i_BFu0ll_Vp");
    static aBFu9i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9i_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0ll_Vp(Test_aBFu9i_BFu0ll_Vp, "aBFu9i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu0s");
    static aBFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s(Test_aBFu9i_BFu0s, "aBFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu0c");
    static aBFu9i_BFu0s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu0c(Test_aBFu9i_BFu0s_BFu0c, "aBFu9i_BFu0s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu0i");
    static aBFu9i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu0i(Test_aBFu9i_BFu0s_BFu0i, "aBFu9i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu0ll");
    static aBFu9i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu0ll(Test_aBFu9i_BFu0s_BFu0ll, "aBFu9i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu0s");
    static aBFu9i_BFu0s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu0s(Test_aBFu9i_BFu0s_BFu0s, "aBFu9i_BFu0s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu15i");
    static aBFu9i_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu15i(Test_aBFu9i_BFu0s_BFu15i, "aBFu9i_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu15ll");
    static aBFu9i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu15ll(Test_aBFu9i_BFu0s_BFu15ll, "aBFu9i_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu15s");
    static aBFu9i_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu15s(Test_aBFu9i_BFu0s_BFu15s, "aBFu9i_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu16i");
    static aBFu9i_BFu0s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu16i(Test_aBFu9i_BFu0s_BFu16i, "aBFu9i_BFu0s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu16ll");
    static aBFu9i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu16ll(Test_aBFu9i_BFu0s_BFu16ll, "aBFu9i_BFu0s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu16s");
    static aBFu9i_BFu0s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu16s(Test_aBFu9i_BFu0s_BFu16s, "aBFu9i_BFu0s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu17i");
    static aBFu9i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu17i(Test_aBFu9i_BFu0s_BFu17i, "aBFu9i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu17ll");
    static aBFu9i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu17ll(Test_aBFu9i_BFu0s_BFu17ll, "aBFu9i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu1c");
    static aBFu9i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu1c(Test_aBFu9i_BFu0s_BFu1c, "aBFu9i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu1i");
    static aBFu9i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu1i(Test_aBFu9i_BFu0s_BFu1i, "aBFu9i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu1ll");
    static aBFu9i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu1ll(Test_aBFu9i_BFu0s_BFu1ll, "aBFu9i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu1s");
    static aBFu9i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu1s(Test_aBFu9i_BFu0s_BFu1s, "aBFu9i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu31i");
    static aBFu9i_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu31i(Test_aBFu9i_BFu0s_BFu31i, "aBFu9i_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu31ll");
    static aBFu9i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu31ll(Test_aBFu9i_BFu0s_BFu31ll, "aBFu9i_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu32i");
    static aBFu9i_BFu0s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu32i(Test_aBFu9i_BFu0s_BFu32i, "aBFu9i_BFu0s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu32ll");
    static aBFu9i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu32ll(Test_aBFu9i_BFu0s_BFu32ll, "aBFu9i_BFu0s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu33");
    static aBFu9i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9i_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu33(Test_aBFu9i_BFu0s_BFu33, "aBFu9i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu7c");
    static aBFu9i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu7c(Test_aBFu9i_BFu0s_BFu7c, "aBFu9i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu7i");
    static aBFu9i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu7i(Test_aBFu9i_BFu0s_BFu7i, "aBFu9i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu7ll");
    static aBFu9i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu7ll(Test_aBFu9i_BFu0s_BFu7ll, "aBFu9i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu7s");
    static aBFu9i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9i_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu7s(Test_aBFu9i_BFu0s_BFu7s, "aBFu9i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu8c");
    static aBFu9i_BFu0s_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu8c(Test_aBFu9i_BFu0s_BFu8c, "aBFu9i_BFu0s_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu8i");
    static aBFu9i_BFu0s_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu8i(Test_aBFu9i_BFu0s_BFu8i, "aBFu9i_BFu0s_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu8ll");
    static aBFu9i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu8ll(Test_aBFu9i_BFu0s_BFu8ll, "aBFu9i_BFu0s_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu8s");
    static aBFu9i_BFu0s_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu8s(Test_aBFu9i_BFu0s_BFu8s, "aBFu9i_BFu0s_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu9i");
    static aBFu9i_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu9i(Test_aBFu9i_BFu0s_BFu9i, "aBFu9i_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu9ll");
    static aBFu9i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu9ll(Test_aBFu9i_BFu0s_BFu9ll, "aBFu9i_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu9i_BFu0s_BFu9s");
    static aBFu9i_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_BFu9s(Test_aBFu9i_BFu0s_BFu9s, "aBFu9i_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_C()
{
  {
    init_simple_test("aBFu9i_BFu0s_C");
    static aBFu9i_BFu0s_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_C");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_C(Test_aBFu9i_BFu0s_C, "aBFu9i_BFu0s_C", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_D()
{
  {
    init_simple_test("aBFu9i_BFu0s_D");
    static aBFu9i_BFu0s_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_D");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_D(Test_aBFu9i_BFu0s_D, "aBFu9i_BFu0s_D", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_F()
{
  {
    init_simple_test("aBFu9i_BFu0s_F");
    static aBFu9i_BFu0s_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_F");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_F(Test_aBFu9i_BFu0s_F, "aBFu9i_BFu0s_F", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_I()
{
  {
    init_simple_test("aBFu9i_BFu0s_I");
    static aBFu9i_BFu0s_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_I");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_I(Test_aBFu9i_BFu0s_I, "aBFu9i_BFu0s_I", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Ip()
{
  {
    init_simple_test("aBFu9i_BFu0s_Ip");
    static aBFu9i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Ip");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Ip(Test_aBFu9i_BFu0s_Ip, "aBFu9i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_L()
{
  {
    init_simple_test("aBFu9i_BFu0s_L");
    static aBFu9i_BFu0s_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_L");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_L(Test_aBFu9i_BFu0s_L, "aBFu9i_BFu0s_L", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_S()
{
  {
    init_simple_test("aBFu9i_BFu0s_S");
    static aBFu9i_BFu0s_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_S");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_S(Test_aBFu9i_BFu0s_S, "aBFu9i_BFu0s_S", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Uc()
{
  {
    init_simple_test("aBFu9i_BFu0s_Uc");
    static aBFu9i_BFu0s_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Uc");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Uc(Test_aBFu9i_BFu0s_Uc, "aBFu9i_BFu0s_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Ui()
{
  {
    init_simple_test("aBFu9i_BFu0s_Ui");
    static aBFu9i_BFu0s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Ui");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Ui(Test_aBFu9i_BFu0s_Ui, "aBFu9i_BFu0s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Ul()
{
  {
    init_simple_test("aBFu9i_BFu0s_Ul");
    static aBFu9i_BFu0s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Ul");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Ul(Test_aBFu9i_BFu0s_Ul, "aBFu9i_BFu0s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Us()
{
  {
    init_simple_test("aBFu9i_BFu0s_Us");
    static aBFu9i_BFu0s_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Us");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Us(Test_aBFu9i_BFu0s_Us, "aBFu9i_BFu0s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu0s_Vp()
{
  {
    init_simple_test("aBFu9i_BFu0s_Vp");
    static aBFu9i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu0s_Vp");
    check_field_offset(lv, v2, 2, "aBFu9i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu0s_Vp(Test_aBFu9i_BFu0s_Vp, "aBFu9i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu15i_BFu0c");
    static aBFu9i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15i_BFu0c(Test_aBFu9i_BFu15i_BFu0c, "aBFu9i_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu15i_BFu0i");
    static aBFu9i_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15i_BFu0i(Test_aBFu9i_BFu15i_BFu0i, "aBFu9i_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu15i_BFu0ll");
    static aBFu9i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15i_BFu0ll(Test_aBFu9i_BFu15i_BFu0ll, "aBFu9i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu15i_BFu0s");
    static aBFu9i_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15i_BFu0s(Test_aBFu9i_BFu15i_BFu0s, "aBFu9i_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu15ll_BFu0c");
    static aBFu9i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15ll_BFu0c(Test_aBFu9i_BFu15ll_BFu0c, "aBFu9i_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu15ll_BFu0i");
    static aBFu9i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15ll_BFu0i(Test_aBFu9i_BFu15ll_BFu0i, "aBFu9i_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu15ll_BFu0ll");
    static aBFu9i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15ll_BFu0ll(Test_aBFu9i_BFu15ll_BFu0ll, "aBFu9i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu15ll_BFu0s");
    static aBFu9i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15ll_BFu0s(Test_aBFu9i_BFu15ll_BFu0s, "aBFu9i_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu15s_BFu0c");
    static aBFu9i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15s_BFu0c(Test_aBFu9i_BFu15s_BFu0c, "aBFu9i_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu15s_BFu0i");
    static aBFu9i_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15s_BFu0i(Test_aBFu9i_BFu15s_BFu0i, "aBFu9i_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu15s_BFu0ll");
    static aBFu9i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15s_BFu0ll(Test_aBFu9i_BFu15s_BFu0ll, "aBFu9i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu15s_BFu0s");
    static aBFu9i_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu15s_BFu0s(Test_aBFu9i_BFu15s_BFu0s, "aBFu9i_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu16i_BFu0c");
    static aBFu9i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16i_BFu0c(Test_aBFu9i_BFu16i_BFu0c, "aBFu9i_BFu16i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu16i_BFu0i");
    static aBFu9i_BFu16i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16i_BFu0i(Test_aBFu9i_BFu16i_BFu0i, "aBFu9i_BFu16i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu16i_BFu0ll");
    static aBFu9i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16i_BFu0ll(Test_aBFu9i_BFu16i_BFu0ll, "aBFu9i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu16i_BFu0s");
    static aBFu9i_BFu16i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16i_BFu0s(Test_aBFu9i_BFu16i_BFu0s, "aBFu9i_BFu16i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu16ll_BFu0c");
    static aBFu9i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16ll_BFu0c(Test_aBFu9i_BFu16ll_BFu0c, "aBFu9i_BFu16ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu16ll_BFu0i");
    static aBFu9i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16ll_BFu0i(Test_aBFu9i_BFu16ll_BFu0i, "aBFu9i_BFu16ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu16ll_BFu0ll");
    static aBFu9i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16ll_BFu0ll(Test_aBFu9i_BFu16ll_BFu0ll, "aBFu9i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu16ll_BFu0s");
    static aBFu9i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16ll_BFu0s(Test_aBFu9i_BFu16ll_BFu0s, "aBFu9i_BFu16ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu16s_BFu0c");
    static aBFu9i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16s_BFu0c(Test_aBFu9i_BFu16s_BFu0c, "aBFu9i_BFu16s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu16s_BFu0i");
    static aBFu9i_BFu16s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16s_BFu0i(Test_aBFu9i_BFu16s_BFu0i, "aBFu9i_BFu16s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu16s_BFu0ll");
    static aBFu9i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16s_BFu0ll(Test_aBFu9i_BFu16s_BFu0ll, "aBFu9i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu16s_BFu0s");
    static aBFu9i_BFu16s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu16s_BFu0s(Test_aBFu9i_BFu16s_BFu0s, "aBFu9i_BFu16s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu17i_BFu0c");
    static aBFu9i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17i_BFu0c(Test_aBFu9i_BFu17i_BFu0c, "aBFu9i_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu17i_BFu0i");
    static aBFu9i_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17i_BFu0i(Test_aBFu9i_BFu17i_BFu0i, "aBFu9i_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu17i_BFu0ll");
    static aBFu9i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17i_BFu0ll(Test_aBFu9i_BFu17i_BFu0ll, "aBFu9i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu17i_BFu0s");
    static aBFu9i_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17i_BFu0s(Test_aBFu9i_BFu17i_BFu0s, "aBFu9i_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu17ll_BFu0c");
    static aBFu9i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17ll_BFu0c(Test_aBFu9i_BFu17ll_BFu0c, "aBFu9i_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu17ll_BFu0i");
    static aBFu9i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17ll_BFu0i(Test_aBFu9i_BFu17ll_BFu0i, "aBFu9i_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu17ll_BFu0ll");
    static aBFu9i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17ll_BFu0ll(Test_aBFu9i_BFu17ll_BFu0ll, "aBFu9i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu17ll_BFu0s");
    static aBFu9i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu17ll_BFu0s(Test_aBFu9i_BFu17ll_BFu0s, "aBFu9i_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu1c_BFu0c");
    static aBFu9i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1c_BFu0c(Test_aBFu9i_BFu1c_BFu0c, "aBFu9i_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu1c_BFu0i");
    static aBFu9i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1c_BFu0i(Test_aBFu9i_BFu1c_BFu0i, "aBFu9i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu1c_BFu0ll");
    static aBFu9i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1c_BFu0ll(Test_aBFu9i_BFu1c_BFu0ll, "aBFu9i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu1c_BFu0s");
    static aBFu9i_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1c_BFu0s(Test_aBFu9i_BFu1c_BFu0s, "aBFu9i_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu1i_BFu0c");
    static aBFu9i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1i_BFu0c(Test_aBFu9i_BFu1i_BFu0c, "aBFu9i_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu1i_BFu0i");
    static aBFu9i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1i_BFu0i(Test_aBFu9i_BFu1i_BFu0i, "aBFu9i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu1i_BFu0ll");
    static aBFu9i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1i_BFu0ll(Test_aBFu9i_BFu1i_BFu0ll, "aBFu9i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu1i_BFu0s");
    static aBFu9i_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1i_BFu0s(Test_aBFu9i_BFu1i_BFu0s, "aBFu9i_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu1ll_BFu0c");
    static aBFu9i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1ll_BFu0c(Test_aBFu9i_BFu1ll_BFu0c, "aBFu9i_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu1ll_BFu0i");
    static aBFu9i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1ll_BFu0i(Test_aBFu9i_BFu1ll_BFu0i, "aBFu9i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu1ll_BFu0ll");
    static aBFu9i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1ll_BFu0ll(Test_aBFu9i_BFu1ll_BFu0ll, "aBFu9i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu1ll_BFu0s");
    static aBFu9i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1ll_BFu0s(Test_aBFu9i_BFu1ll_BFu0s, "aBFu9i_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu1s_BFu0c");
    static aBFu9i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1s_BFu0c(Test_aBFu9i_BFu1s_BFu0c, "aBFu9i_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu1s_BFu0i");
    static aBFu9i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1s_BFu0i(Test_aBFu9i_BFu1s_BFu0i, "aBFu9i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu1s_BFu0ll");
    static aBFu9i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1s_BFu0ll(Test_aBFu9i_BFu1s_BFu0ll, "aBFu9i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu1s_BFu0s");
    static aBFu9i_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu1s_BFu0s(Test_aBFu9i_BFu1s_BFu0s, "aBFu9i_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu31i_BFu0c");
    static aBFu9i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31i_BFu0c(Test_aBFu9i_BFu31i_BFu0c, "aBFu9i_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu31i_BFu0i");
    static aBFu9i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31i_BFu0i(Test_aBFu9i_BFu31i_BFu0i, "aBFu9i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu31i_BFu0ll");
    static aBFu9i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31i_BFu0ll(Test_aBFu9i_BFu31i_BFu0ll, "aBFu9i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu31i_BFu0s");
    static aBFu9i_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31i_BFu0s(Test_aBFu9i_BFu31i_BFu0s, "aBFu9i_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu31ll_BFu0c");
    static aBFu9i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31ll_BFu0c(Test_aBFu9i_BFu31ll_BFu0c, "aBFu9i_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu31ll_BFu0i");
    static aBFu9i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31ll_BFu0i(Test_aBFu9i_BFu31ll_BFu0i, "aBFu9i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu31ll_BFu0ll");
    static aBFu9i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31ll_BFu0ll(Test_aBFu9i_BFu31ll_BFu0ll, "aBFu9i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu31ll_BFu0s");
    static aBFu9i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu31ll_BFu0s(Test_aBFu9i_BFu31ll_BFu0s, "aBFu9i_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu32i_BFu0c");
    static aBFu9i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32i_BFu0c(Test_aBFu9i_BFu32i_BFu0c, "aBFu9i_BFu32i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu32i_BFu0i");
    static aBFu9i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32i_BFu0i(Test_aBFu9i_BFu32i_BFu0i, "aBFu9i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu32i_BFu0ll");
    static aBFu9i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32i_BFu0ll(Test_aBFu9i_BFu32i_BFu0ll, "aBFu9i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu32i_BFu0s");
    static aBFu9i_BFu32i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32i_BFu0s(Test_aBFu9i_BFu32i_BFu0s, "aBFu9i_BFu32i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu32ll_BFu0c");
    static aBFu9i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32ll_BFu0c(Test_aBFu9i_BFu32ll_BFu0c, "aBFu9i_BFu32ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu32ll_BFu0i");
    static aBFu9i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32ll_BFu0i(Test_aBFu9i_BFu32ll_BFu0i, "aBFu9i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu32ll_BFu0ll");
    static aBFu9i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32ll_BFu0ll(Test_aBFu9i_BFu32ll_BFu0ll, "aBFu9i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu32ll_BFu0s");
    static aBFu9i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu32ll_BFu0s(Test_aBFu9i_BFu32ll_BFu0s, "aBFu9i_BFu32ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu33_BFu0c");
    static aBFu9i_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu33_BFu0c(Test_aBFu9i_BFu33_BFu0c, "aBFu9i_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu33_BFu0i");
    static aBFu9i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu33_BFu0i(Test_aBFu9i_BFu33_BFu0i, "aBFu9i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu33_BFu0ll");
    static aBFu9i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu33_BFu0ll(Test_aBFu9i_BFu33_BFu0ll, "aBFu9i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu33_BFu0s");
    static aBFu9i_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu33_BFu0s(Test_aBFu9i_BFu33_BFu0s, "aBFu9i_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu7c_BFu0c");
    static aBFu9i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7c_BFu0c(Test_aBFu9i_BFu7c_BFu0c, "aBFu9i_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu7c_BFu0i");
    static aBFu9i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7c_BFu0i(Test_aBFu9i_BFu7c_BFu0i, "aBFu9i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu7c_BFu0ll");
    static aBFu9i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7c_BFu0ll(Test_aBFu9i_BFu7c_BFu0ll, "aBFu9i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu7c_BFu0s");
    static aBFu9i_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7c_BFu0s(Test_aBFu9i_BFu7c_BFu0s, "aBFu9i_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu7i_BFu0c");
    static aBFu9i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7i_BFu0c(Test_aBFu9i_BFu7i_BFu0c, "aBFu9i_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu7i_BFu0i");
    static aBFu9i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7i_BFu0i(Test_aBFu9i_BFu7i_BFu0i, "aBFu9i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu7i_BFu0ll");
    static aBFu9i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7i_BFu0ll(Test_aBFu9i_BFu7i_BFu0ll, "aBFu9i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu7i_BFu0s");
    static aBFu9i_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7i_BFu0s(Test_aBFu9i_BFu7i_BFu0s, "aBFu9i_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu7ll_BFu0c");
    static aBFu9i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7ll_BFu0c(Test_aBFu9i_BFu7ll_BFu0c, "aBFu9i_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu7ll_BFu0i");
    static aBFu9i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7ll_BFu0i(Test_aBFu9i_BFu7ll_BFu0i, "aBFu9i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu7ll_BFu0ll");
    static aBFu9i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7ll_BFu0ll(Test_aBFu9i_BFu7ll_BFu0ll, "aBFu9i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu7ll_BFu0s");
    static aBFu9i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7ll_BFu0s(Test_aBFu9i_BFu7ll_BFu0s, "aBFu9i_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu7s_BFu0c");
    static aBFu9i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7s_BFu0c(Test_aBFu9i_BFu7s_BFu0c, "aBFu9i_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu7s_BFu0i");
    static aBFu9i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7s_BFu0i(Test_aBFu9i_BFu7s_BFu0i, "aBFu9i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu7s_BFu0ll");
    static aBFu9i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7s_BFu0ll(Test_aBFu9i_BFu7s_BFu0ll, "aBFu9i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu7s_BFu0s");
    static aBFu9i_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9i_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu7s_BFu0s(Test_aBFu9i_BFu7s_BFu0s, "aBFu9i_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu8c_BFu0c");
    static aBFu9i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8c_BFu0c(Test_aBFu9i_BFu8c_BFu0c, "aBFu9i_BFu8c_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu8c_BFu0i");
    static aBFu9i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8c_BFu0i(Test_aBFu9i_BFu8c_BFu0i, "aBFu9i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu8c_BFu0ll");
    static aBFu9i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8c_BFu0ll(Test_aBFu9i_BFu8c_BFu0ll, "aBFu9i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu8c_BFu0s");
    static aBFu9i_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8c_BFu0s(Test_aBFu9i_BFu8c_BFu0s, "aBFu9i_BFu8c_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu8i_BFu0c");
    static aBFu9i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8i_BFu0c(Test_aBFu9i_BFu8i_BFu0c, "aBFu9i_BFu8i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu8i_BFu0i");
    static aBFu9i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8i_BFu0i(Test_aBFu9i_BFu8i_BFu0i, "aBFu9i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu8i_BFu0ll");
    static aBFu9i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8i_BFu0ll(Test_aBFu9i_BFu8i_BFu0ll, "aBFu9i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu8i_BFu0s");
    static aBFu9i_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8i_BFu0s(Test_aBFu9i_BFu8i_BFu0s, "aBFu9i_BFu8i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu8ll_BFu0c");
    static aBFu9i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8ll_BFu0c(Test_aBFu9i_BFu8ll_BFu0c, "aBFu9i_BFu8ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu8ll_BFu0i");
    static aBFu9i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8ll_BFu0i(Test_aBFu9i_BFu8ll_BFu0i, "aBFu9i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu8ll_BFu0ll");
    static aBFu9i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8ll_BFu0ll(Test_aBFu9i_BFu8ll_BFu0ll, "aBFu9i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu8ll_BFu0s");
    static aBFu9i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8ll_BFu0s(Test_aBFu9i_BFu8ll_BFu0s, "aBFu9i_BFu8ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu8s_BFu0c");
    static aBFu9i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8s_BFu0c(Test_aBFu9i_BFu8s_BFu0c, "aBFu9i_BFu8s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu8s_BFu0i");
    static aBFu9i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8s_BFu0i(Test_aBFu9i_BFu8s_BFu0i, "aBFu9i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu8s_BFu0ll");
    static aBFu9i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8s_BFu0ll(Test_aBFu9i_BFu8s_BFu0ll, "aBFu9i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu8s_BFu0s");
    static aBFu9i_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu8s_BFu0s(Test_aBFu9i_BFu8s_BFu0s, "aBFu9i_BFu8s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu9i_BFu0c");
    static aBFu9i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9i_BFu0c(Test_aBFu9i_BFu9i_BFu0c, "aBFu9i_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu9i_BFu0i");
    static aBFu9i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9i_BFu0i(Test_aBFu9i_BFu9i_BFu0i, "aBFu9i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu9i_BFu0ll");
    static aBFu9i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9i_BFu0ll(Test_aBFu9i_BFu9i_BFu0ll, "aBFu9i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu9i_BFu0s");
    static aBFu9i_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9i_BFu0s(Test_aBFu9i_BFu9i_BFu0s, "aBFu9i_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu9ll_BFu0c");
    static aBFu9i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9ll_BFu0c(Test_aBFu9i_BFu9ll_BFu0c, "aBFu9i_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu9ll_BFu0i");
    static aBFu9i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9ll_BFu0i(Test_aBFu9i_BFu9ll_BFu0i, "aBFu9i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu9ll_BFu0ll");
    static aBFu9i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9ll_BFu0ll(Test_aBFu9i_BFu9ll_BFu0ll, "aBFu9i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu9ll_BFu0s");
    static aBFu9i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9ll_BFu0s(Test_aBFu9i_BFu9ll_BFu0s, "aBFu9i_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu9i_BFu9s_BFu0c");
    static aBFu9i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9s_BFu0c(Test_aBFu9i_BFu9s_BFu0c, "aBFu9i_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu9i_BFu9s_BFu0i");
    static aBFu9i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9s_BFu0i(Test_aBFu9i_BFu9s_BFu0i, "aBFu9i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu9i_BFu9s_BFu0ll");
    static aBFu9i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9s_BFu0ll(Test_aBFu9i_BFu9s_BFu0ll, "aBFu9i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu9i_BFu9s_BFu0s");
    static aBFu9i_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9i_BFu9s_BFu0s(Test_aBFu9i_BFu9s_BFu0s, "aBFu9i_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_C_BFu0c()
{
  {
    init_simple_test("aBFu9i_C_BFu0c");
    static aBFu9i_C_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_C_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_C_BFu0c(Test_aBFu9i_C_BFu0c, "aBFu9i_C_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_C_BFu0i()
{
  {
    init_simple_test("aBFu9i_C_BFu0i");
    static aBFu9i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_C_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_C_BFu0i(Test_aBFu9i_C_BFu0i, "aBFu9i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_C_BFu0ll()
{
  {
    init_simple_test("aBFu9i_C_BFu0ll");
    static aBFu9i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_C_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_C_BFu0ll(Test_aBFu9i_C_BFu0ll, "aBFu9i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_C_BFu0s()
{
  {
    init_simple_test("aBFu9i_C_BFu0s");
    static aBFu9i_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_C_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_C_BFu0s(Test_aBFu9i_C_BFu0s, "aBFu9i_C_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_D_BFu0c()
{
  {
    init_simple_test("aBFu9i_D_BFu0c");
    static aBFu9i_D_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_D_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_D_BFu0c(Test_aBFu9i_D_BFu0c, "aBFu9i_D_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_D_BFu0i()
{
  {
    init_simple_test("aBFu9i_D_BFu0i");
    static aBFu9i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_D_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_D_BFu0i(Test_aBFu9i_D_BFu0i, "aBFu9i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_D_BFu0ll()
{
  {
    init_simple_test("aBFu9i_D_BFu0ll");
    static aBFu9i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_D_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_D_BFu0ll(Test_aBFu9i_D_BFu0ll, "aBFu9i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_D_BFu0s()
{
  {
    init_simple_test("aBFu9i_D_BFu0s");
    static aBFu9i_D_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_D_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_D_BFu0s(Test_aBFu9i_D_BFu0s, "aBFu9i_D_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_F_BFu0c()
{
  {
    init_simple_test("aBFu9i_F_BFu0c");
    static aBFu9i_F_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_F_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_F_BFu0c(Test_aBFu9i_F_BFu0c, "aBFu9i_F_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_F_BFu0i()
{
  {
    init_simple_test("aBFu9i_F_BFu0i");
    static aBFu9i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_F_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_F_BFu0i(Test_aBFu9i_F_BFu0i, "aBFu9i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_F_BFu0ll()
{
  {
    init_simple_test("aBFu9i_F_BFu0ll");
    static aBFu9i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_F_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_F_BFu0ll(Test_aBFu9i_F_BFu0ll, "aBFu9i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_F_BFu0s()
{
  {
    init_simple_test("aBFu9i_F_BFu0s");
    static aBFu9i_F_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_F_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_F_BFu0s(Test_aBFu9i_F_BFu0s, "aBFu9i_F_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_I_BFu0c()
{
  {
    init_simple_test("aBFu9i_I_BFu0c");
    static aBFu9i_I_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_I_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_I_BFu0c(Test_aBFu9i_I_BFu0c, "aBFu9i_I_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_I_BFu0i()
{
  {
    init_simple_test("aBFu9i_I_BFu0i");
    static aBFu9i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_I_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_I_BFu0i(Test_aBFu9i_I_BFu0i, "aBFu9i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_I_BFu0ll()
{
  {
    init_simple_test("aBFu9i_I_BFu0ll");
    static aBFu9i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_I_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_I_BFu0ll(Test_aBFu9i_I_BFu0ll, "aBFu9i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_I_BFu0s()
{
  {
    init_simple_test("aBFu9i_I_BFu0s");
    static aBFu9i_I_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_I_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_I_BFu0s(Test_aBFu9i_I_BFu0s, "aBFu9i_I_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ip_BFu0c()
{
  {
    init_simple_test("aBFu9i_Ip_BFu0c");
    static aBFu9i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ip_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ip_BFu0c(Test_aBFu9i_Ip_BFu0c, "aBFu9i_Ip_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ip_BFu0i()
{
  {
    init_simple_test("aBFu9i_Ip_BFu0i");
    static aBFu9i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ip_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ip_BFu0i(Test_aBFu9i_Ip_BFu0i, "aBFu9i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Ip_BFu0ll");
    static aBFu9i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9i_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ip_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ip_BFu0ll(Test_aBFu9i_Ip_BFu0ll, "aBFu9i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ip_BFu0s()
{
  {
    init_simple_test("aBFu9i_Ip_BFu0s");
    static aBFu9i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ip_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ip_BFu0s(Test_aBFu9i_Ip_BFu0s, "aBFu9i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_L_BFu0c()
{
  {
    init_simple_test("aBFu9i_L_BFu0c");
    static aBFu9i_L_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_L_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_L_BFu0c(Test_aBFu9i_L_BFu0c, "aBFu9i_L_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_L_BFu0i()
{
  {
    init_simple_test("aBFu9i_L_BFu0i");
    static aBFu9i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_L_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_L_BFu0i(Test_aBFu9i_L_BFu0i, "aBFu9i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_L_BFu0ll()
{
  {
    init_simple_test("aBFu9i_L_BFu0ll");
    static aBFu9i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_L_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_L_BFu0ll(Test_aBFu9i_L_BFu0ll, "aBFu9i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_L_BFu0s()
{
  {
    init_simple_test("aBFu9i_L_BFu0s");
    static aBFu9i_L_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_L_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_L_BFu0s(Test_aBFu9i_L_BFu0s, "aBFu9i_L_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_S_BFu0c()
{
  {
    init_simple_test("aBFu9i_S_BFu0c");
    static aBFu9i_S_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_S_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_S_BFu0c(Test_aBFu9i_S_BFu0c, "aBFu9i_S_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_S_BFu0i()
{
  {
    init_simple_test("aBFu9i_S_BFu0i");
    static aBFu9i_S_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_S_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_S_BFu0i(Test_aBFu9i_S_BFu0i, "aBFu9i_S_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_S_BFu0ll()
{
  {
    init_simple_test("aBFu9i_S_BFu0ll");
    static aBFu9i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_S_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_S_BFu0ll(Test_aBFu9i_S_BFu0ll, "aBFu9i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_S_BFu0s()
{
  {
    init_simple_test("aBFu9i_S_BFu0s");
    static aBFu9i_S_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_S_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_S_BFu0s(Test_aBFu9i_S_BFu0s, "aBFu9i_S_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Uc_BFu0c()
{
  {
    init_simple_test("aBFu9i_Uc_BFu0c");
    static aBFu9i_Uc_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Uc_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Uc_BFu0c(Test_aBFu9i_Uc_BFu0c, "aBFu9i_Uc_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Uc_BFu0i()
{
  {
    init_simple_test("aBFu9i_Uc_BFu0i");
    static aBFu9i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Uc_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Uc_BFu0i(Test_aBFu9i_Uc_BFu0i, "aBFu9i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Uc_BFu0ll");
    static aBFu9i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Uc_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Uc_BFu0ll(Test_aBFu9i_Uc_BFu0ll, "aBFu9i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Uc_BFu0s()
{
  {
    init_simple_test("aBFu9i_Uc_BFu0s");
    static aBFu9i_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9i_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Uc_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Uc_BFu0s(Test_aBFu9i_Uc_BFu0s, "aBFu9i_Uc_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ui_BFu0c()
{
  {
    init_simple_test("aBFu9i_Ui_BFu0c");
    static aBFu9i_Ui_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ui_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ui_BFu0c(Test_aBFu9i_Ui_BFu0c, "aBFu9i_Ui_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ui_BFu0i()
{
  {
    init_simple_test("aBFu9i_Ui_BFu0i");
    static aBFu9i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ui_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ui_BFu0i(Test_aBFu9i_Ui_BFu0i, "aBFu9i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Ui_BFu0ll");
    static aBFu9i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9i_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ui_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ui_BFu0ll(Test_aBFu9i_Ui_BFu0ll, "aBFu9i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ui_BFu0s()
{
  {
    init_simple_test("aBFu9i_Ui_BFu0s");
    static aBFu9i_Ui_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9i_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ui_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ui_BFu0s(Test_aBFu9i_Ui_BFu0s, "aBFu9i_Ui_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ul_BFu0c()
{
  {
    init_simple_test("aBFu9i_Ul_BFu0c");
    static aBFu9i_Ul_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ul_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ul_BFu0c(Test_aBFu9i_Ul_BFu0c, "aBFu9i_Ul_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ul_BFu0i()
{
  {
    init_simple_test("aBFu9i_Ul_BFu0i");
    static aBFu9i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9i_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ul_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ul_BFu0i(Test_aBFu9i_Ul_BFu0i, "aBFu9i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Ul_BFu0ll");
    static aBFu9i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9i_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ul_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ul_BFu0ll(Test_aBFu9i_Ul_BFu0ll, "aBFu9i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Ul_BFu0s()
{
  {
    init_simple_test("aBFu9i_Ul_BFu0s");
    static aBFu9i_Ul_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9i_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Ul_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Ul_BFu0s(Test_aBFu9i_Ul_BFu0s, "aBFu9i_Ul_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Us_BFu0c()
{
  {
    init_simple_test("aBFu9i_Us_BFu0c");
    static aBFu9i_Us_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Us_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Us_BFu0c(Test_aBFu9i_Us_BFu0c, "aBFu9i_Us_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Us_BFu0i()
{
  {
    init_simple_test("aBFu9i_Us_BFu0i");
    static aBFu9i_Us_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Us_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Us_BFu0i(Test_aBFu9i_Us_BFu0i, "aBFu9i_Us_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Us_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Us_BFu0ll");
    static aBFu9i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9i_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Us_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Us_BFu0ll(Test_aBFu9i_Us_BFu0ll, "aBFu9i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Us_BFu0s()
{
  {
    init_simple_test("aBFu9i_Us_BFu0s");
    static aBFu9i_Us_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9i_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Us_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Us_BFu0s(Test_aBFu9i_Us_BFu0s, "aBFu9i_Us_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Vp_BFu0c()
{
  {
    init_simple_test("aBFu9i_Vp_BFu0c");
    static aBFu9i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Vp_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Vp_BFu0c(Test_aBFu9i_Vp_BFu0c, "aBFu9i_Vp_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Vp_BFu0i()
{
  {
    init_simple_test("aBFu9i_Vp_BFu0i");
    static aBFu9i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9i_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Vp_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Vp_BFu0i(Test_aBFu9i_Vp_BFu0i, "aBFu9i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu9i_Vp_BFu0ll");
    static aBFu9i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9i_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Vp_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Vp_BFu0ll(Test_aBFu9i_Vp_BFu0ll, "aBFu9i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9i_Vp_BFu0s()
{
  {
    init_simple_test("aBFu9i_Vp_BFu0s");
    static aBFu9i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9i_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9i_Vp_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9i_Vp_BFu0s(Test_aBFu9i_Vp_BFu0s, "aBFu9i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu0c");
    static aBFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c(Test_aBFu9ll_BFu0c, "aBFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu0c");
    static aBFu9ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu0c(Test_aBFu9ll_BFu0c_BFu0c, "aBFu9ll_BFu0c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu0i");
    static aBFu9ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu0i(Test_aBFu9ll_BFu0c_BFu0i, "aBFu9ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu0ll");
    static aBFu9ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu0ll(Test_aBFu9ll_BFu0c_BFu0ll, "aBFu9ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu0s");
    static aBFu9ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu0s(Test_aBFu9ll_BFu0c_BFu0s, "aBFu9ll_BFu0c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu15i");
    static aBFu9ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu15i(Test_aBFu9ll_BFu0c_BFu15i, "aBFu9ll_BFu0c_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu15ll");
    static aBFu9ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu15ll(Test_aBFu9ll_BFu0c_BFu15ll, "aBFu9ll_BFu0c_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu15s");
    static aBFu9ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu15s(Test_aBFu9ll_BFu0c_BFu15s, "aBFu9ll_BFu0c_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu16i");
    static aBFu9ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu16i(Test_aBFu9ll_BFu0c_BFu16i, "aBFu9ll_BFu0c_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu16ll");
    static aBFu9ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu16ll(Test_aBFu9ll_BFu0c_BFu16ll, "aBFu9ll_BFu0c_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu16s");
    static aBFu9ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu16s(Test_aBFu9ll_BFu0c_BFu16s, "aBFu9ll_BFu0c_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu17i");
    static aBFu9ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu17i(Test_aBFu9ll_BFu0c_BFu17i, "aBFu9ll_BFu0c_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu17ll");
    static aBFu9ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu17ll(Test_aBFu9ll_BFu0c_BFu17ll, "aBFu9ll_BFu0c_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu1c");
    static aBFu9ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu1c(Test_aBFu9ll_BFu0c_BFu1c, "aBFu9ll_BFu0c_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu1i");
    static aBFu9ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu1i(Test_aBFu9ll_BFu0c_BFu1i, "aBFu9ll_BFu0c_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu1ll");
    static aBFu9ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu1ll(Test_aBFu9ll_BFu0c_BFu1ll, "aBFu9ll_BFu0c_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu1s");
    static aBFu9ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu1s(Test_aBFu9ll_BFu0c_BFu1s, "aBFu9ll_BFu0c_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu31i");
    static aBFu9ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu31i(Test_aBFu9ll_BFu0c_BFu31i, "aBFu9ll_BFu0c_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu31ll");
    static aBFu9ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu31ll(Test_aBFu9ll_BFu0c_BFu31ll, "aBFu9ll_BFu0c_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu32i");
    static aBFu9ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu32i(Test_aBFu9ll_BFu0c_BFu32i, "aBFu9ll_BFu0c_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu32ll");
    static aBFu9ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu32ll(Test_aBFu9ll_BFu0c_BFu32ll, "aBFu9ll_BFu0c_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu33");
    static aBFu9ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu33(Test_aBFu9ll_BFu0c_BFu33, "aBFu9ll_BFu0c_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu7c");
    static aBFu9ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu7c(Test_aBFu9ll_BFu0c_BFu7c, "aBFu9ll_BFu0c_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu7i");
    static aBFu9ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu7i(Test_aBFu9ll_BFu0c_BFu7i, "aBFu9ll_BFu0c_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu7ll");
    static aBFu9ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu7ll(Test_aBFu9ll_BFu0c_BFu7ll, "aBFu9ll_BFu0c_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu7s");
    static aBFu9ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu7s(Test_aBFu9ll_BFu0c_BFu7s, "aBFu9ll_BFu0c_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu8c");
    static aBFu9ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu8c(Test_aBFu9ll_BFu0c_BFu8c, "aBFu9ll_BFu0c_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu8i");
    static aBFu9ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu8i(Test_aBFu9ll_BFu0c_BFu8i, "aBFu9ll_BFu0c_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu8ll");
    static aBFu9ll_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu8ll(Test_aBFu9ll_BFu0c_BFu8ll, "aBFu9ll_BFu0c_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu8s");
    static aBFu9ll_BFu0c_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu8s(Test_aBFu9ll_BFu0c_BFu8s, "aBFu9ll_BFu0c_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu9i");
    static aBFu9ll_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu9i(Test_aBFu9ll_BFu0c_BFu9i, "aBFu9ll_BFu0c_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu9ll");
    static aBFu9ll_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu9ll(Test_aBFu9ll_BFu0c_BFu9ll, "aBFu9ll_BFu0c_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu9ll_BFu0c_BFu9s");
    static aBFu9ll_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_BFu9s(Test_aBFu9ll_BFu0c_BFu9s, "aBFu9ll_BFu0c_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_C()
{
  {
    init_simple_test("aBFu9ll_BFu0c_C");
    static aBFu9ll_BFu0c_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_C");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_C(Test_aBFu9ll_BFu0c_C, "aBFu9ll_BFu0c_C", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_D()
{
  {
    init_simple_test("aBFu9ll_BFu0c_D");
    static aBFu9ll_BFu0c_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_D");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_D(Test_aBFu9ll_BFu0c_D, "aBFu9ll_BFu0c_D", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_F()
{
  {
    init_simple_test("aBFu9ll_BFu0c_F");
    static aBFu9ll_BFu0c_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_F");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_F(Test_aBFu9ll_BFu0c_F, "aBFu9ll_BFu0c_F", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_I()
{
  {
    init_simple_test("aBFu9ll_BFu0c_I");
    static aBFu9ll_BFu0c_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_I");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_I(Test_aBFu9ll_BFu0c_I, "aBFu9ll_BFu0c_I", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Ip()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Ip");
    static aBFu9ll_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Ip");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Ip(Test_aBFu9ll_BFu0c_Ip, "aBFu9ll_BFu0c_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_L()
{
  {
    init_simple_test("aBFu9ll_BFu0c_L");
    static aBFu9ll_BFu0c_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_L");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_L(Test_aBFu9ll_BFu0c_L, "aBFu9ll_BFu0c_L", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_S()
{
  {
    init_simple_test("aBFu9ll_BFu0c_S");
    static aBFu9ll_BFu0c_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_S");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_S(Test_aBFu9ll_BFu0c_S, "aBFu9ll_BFu0c_S", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Uc()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Uc");
    static aBFu9ll_BFu0c_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Uc");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Uc(Test_aBFu9ll_BFu0c_Uc, "aBFu9ll_BFu0c_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Ui()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Ui");
    static aBFu9ll_BFu0c_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Ui");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Ui(Test_aBFu9ll_BFu0c_Ui, "aBFu9ll_BFu0c_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Ul()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Ul");
    static aBFu9ll_BFu0c_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Ul");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Ul(Test_aBFu9ll_BFu0c_Ul, "aBFu9ll_BFu0c_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Us()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Us");
    static aBFu9ll_BFu0c_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Us");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Us(Test_aBFu9ll_BFu0c_Us, "aBFu9ll_BFu0c_Us", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0c_Vp()
{
  {
    init_simple_test("aBFu9ll_BFu0c_Vp");
    static aBFu9ll_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0c_Vp");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0c_Vp(Test_aBFu9ll_BFu0c_Vp, "aBFu9ll_BFu0c_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu0i");
    static aBFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i(Test_aBFu9ll_BFu0i, "aBFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu0c");
    static aBFu9ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu0c(Test_aBFu9ll_BFu0i_BFu0c, "aBFu9ll_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu0i");
    static aBFu9ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu0i(Test_aBFu9ll_BFu0i_BFu0i, "aBFu9ll_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu0ll");
    static aBFu9ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu0ll(Test_aBFu9ll_BFu0i_BFu0ll, "aBFu9ll_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu0s");
    static aBFu9ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu0s(Test_aBFu9ll_BFu0i_BFu0s, "aBFu9ll_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu15i");
    static aBFu9ll_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu15i(Test_aBFu9ll_BFu0i_BFu15i, "aBFu9ll_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu15ll");
    static aBFu9ll_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu15ll(Test_aBFu9ll_BFu0i_BFu15ll, "aBFu9ll_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu15s");
    static aBFu9ll_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu15s(Test_aBFu9ll_BFu0i_BFu15s, "aBFu9ll_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu16i");
    static aBFu9ll_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu16i(Test_aBFu9ll_BFu0i_BFu16i, "aBFu9ll_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu16ll");
    static aBFu9ll_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu16ll(Test_aBFu9ll_BFu0i_BFu16ll, "aBFu9ll_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu16s");
    static aBFu9ll_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu16s(Test_aBFu9ll_BFu0i_BFu16s, "aBFu9ll_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu17i");
    static aBFu9ll_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9ll_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu17i(Test_aBFu9ll_BFu0i_BFu17i, "aBFu9ll_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu17ll");
    static aBFu9ll_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9ll_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu17ll(Test_aBFu9ll_BFu0i_BFu17ll, "aBFu9ll_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu1c");
    static aBFu9ll_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu1c(Test_aBFu9ll_BFu0i_BFu1c, "aBFu9ll_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu1i");
    static aBFu9ll_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu1i(Test_aBFu9ll_BFu0i_BFu1i, "aBFu9ll_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu1ll");
    static aBFu9ll_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu1ll(Test_aBFu9ll_BFu0i_BFu1ll, "aBFu9ll_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu1s");
    static aBFu9ll_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu1s(Test_aBFu9ll_BFu0i_BFu1s, "aBFu9ll_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu31i");
    static aBFu9ll_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu31i(Test_aBFu9ll_BFu0i_BFu31i, "aBFu9ll_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu31ll");
    static aBFu9ll_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu31ll(Test_aBFu9ll_BFu0i_BFu31ll, "aBFu9ll_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu32i");
    static aBFu9ll_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu32i(Test_aBFu9ll_BFu0i_BFu32i, "aBFu9ll_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu32ll");
    static aBFu9ll_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu32ll(Test_aBFu9ll_BFu0i_BFu32ll, "aBFu9ll_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu33");
    static aBFu9ll_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu9ll_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu9ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9ll_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu33(Test_aBFu9ll_BFu0i_BFu33, "aBFu9ll_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu7c");
    static aBFu9ll_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu7c(Test_aBFu9ll_BFu0i_BFu7c, "aBFu9ll_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu7i");
    static aBFu9ll_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu7i(Test_aBFu9ll_BFu0i_BFu7i, "aBFu9ll_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu7ll");
    static aBFu9ll_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu7ll(Test_aBFu9ll_BFu0i_BFu7ll, "aBFu9ll_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu7s");
    static aBFu9ll_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu7s(Test_aBFu9ll_BFu0i_BFu7s, "aBFu9ll_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu8c");
    static aBFu9ll_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu8c(Test_aBFu9ll_BFu0i_BFu8c, "aBFu9ll_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu8i");
    static aBFu9ll_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu8i(Test_aBFu9ll_BFu0i_BFu8i, "aBFu9ll_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu8ll");
    static aBFu9ll_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu8ll(Test_aBFu9ll_BFu0i_BFu8ll, "aBFu9ll_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu8s");
    static aBFu9ll_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu8s(Test_aBFu9ll_BFu0i_BFu8s, "aBFu9ll_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu9i");
    static aBFu9ll_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu9i(Test_aBFu9ll_BFu0i_BFu9i, "aBFu9ll_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu9ll");
    static aBFu9ll_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu9ll(Test_aBFu9ll_BFu0i_BFu9ll, "aBFu9ll_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu9ll_BFu0i_BFu9s");
    static aBFu9ll_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_BFu9s(Test_aBFu9ll_BFu0i_BFu9s, "aBFu9ll_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_C()
{
  {
    init_simple_test("aBFu9ll_BFu0i_C");
    static aBFu9ll_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_C(Test_aBFu9ll_BFu0i_C, "aBFu9ll_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_D()
{
  {
    init_simple_test("aBFu9ll_BFu0i_D");
    static aBFu9ll_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_D(Test_aBFu9ll_BFu0i_D, "aBFu9ll_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_F()
{
  {
    init_simple_test("aBFu9ll_BFu0i_F");
    static aBFu9ll_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_F(Test_aBFu9ll_BFu0i_F, "aBFu9ll_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_I()
{
  {
    init_simple_test("aBFu9ll_BFu0i_I");
    static aBFu9ll_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_I(Test_aBFu9ll_BFu0i_I, "aBFu9ll_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Ip()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Ip");
    static aBFu9ll_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Ip(Test_aBFu9ll_BFu0i_Ip, "aBFu9ll_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_L()
{
  {
    init_simple_test("aBFu9ll_BFu0i_L");
    static aBFu9ll_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_L(Test_aBFu9ll_BFu0i_L, "aBFu9ll_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_S()
{
  {
    init_simple_test("aBFu9ll_BFu0i_S");
    static aBFu9ll_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_S(Test_aBFu9ll_BFu0i_S, "aBFu9ll_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Uc()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Uc");
    static aBFu9ll_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Uc(Test_aBFu9ll_BFu0i_Uc, "aBFu9ll_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Ui()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Ui");
    static aBFu9ll_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Ui(Test_aBFu9ll_BFu0i_Ui, "aBFu9ll_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Ul()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Ul");
    static aBFu9ll_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Ul(Test_aBFu9ll_BFu0i_Ul, "aBFu9ll_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Us()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Us");
    static aBFu9ll_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Us(Test_aBFu9ll_BFu0i_Us, "aBFu9ll_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0i_Vp()
{
  {
    init_simple_test("aBFu9ll_BFu0i_Vp");
    static aBFu9ll_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9ll_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0i_Vp(Test_aBFu9ll_BFu0i_Vp, "aBFu9ll_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll");
    static aBFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll(Test_aBFu9ll_BFu0ll, "aBFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu0c");
    static aBFu9ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu0c(Test_aBFu9ll_BFu0ll_BFu0c, "aBFu9ll_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu0i");
    static aBFu9ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu0i(Test_aBFu9ll_BFu0ll_BFu0i, "aBFu9ll_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu0ll");
    static aBFu9ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu0ll(Test_aBFu9ll_BFu0ll_BFu0ll, "aBFu9ll_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu0s");
    static aBFu9ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu0s(Test_aBFu9ll_BFu0ll_BFu0s, "aBFu9ll_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu15i");
    static aBFu9ll_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu15i(Test_aBFu9ll_BFu0ll_BFu15i, "aBFu9ll_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu15ll");
    static aBFu9ll_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu15ll(Test_aBFu9ll_BFu0ll_BFu15ll, "aBFu9ll_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu15s");
    static aBFu9ll_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu15s(Test_aBFu9ll_BFu0ll_BFu15s, "aBFu9ll_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu16i");
    static aBFu9ll_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu16i(Test_aBFu9ll_BFu0ll_BFu16i, "aBFu9ll_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu16ll");
    static aBFu9ll_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu16ll(Test_aBFu9ll_BFu0ll_BFu16ll, "aBFu9ll_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu16s");
    static aBFu9ll_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu16s(Test_aBFu9ll_BFu0ll_BFu16s, "aBFu9ll_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu17i");
    static aBFu9ll_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9ll_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu17i(Test_aBFu9ll_BFu0ll_BFu17i, "aBFu9ll_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu17ll");
    static aBFu9ll_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9ll_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu17ll(Test_aBFu9ll_BFu0ll_BFu17ll, "aBFu9ll_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu1c");
    static aBFu9ll_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu1c(Test_aBFu9ll_BFu0ll_BFu1c, "aBFu9ll_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu1i");
    static aBFu9ll_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu1i(Test_aBFu9ll_BFu0ll_BFu1i, "aBFu9ll_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu1ll");
    static aBFu9ll_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu1ll(Test_aBFu9ll_BFu0ll_BFu1ll, "aBFu9ll_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu1s");
    static aBFu9ll_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu1s(Test_aBFu9ll_BFu0ll_BFu1s, "aBFu9ll_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu31i");
    static aBFu9ll_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu31i(Test_aBFu9ll_BFu0ll_BFu31i, "aBFu9ll_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu31ll");
    static aBFu9ll_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu31ll(Test_aBFu9ll_BFu0ll_BFu31ll, "aBFu9ll_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu32i");
    static aBFu9ll_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu32i(Test_aBFu9ll_BFu0ll_BFu32i, "aBFu9ll_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu32ll");
    static aBFu9ll_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu32ll(Test_aBFu9ll_BFu0ll_BFu32ll, "aBFu9ll_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu33");
    static aBFu9ll_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu9ll_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu9ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9ll_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu33(Test_aBFu9ll_BFu0ll_BFu33, "aBFu9ll_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu7c");
    static aBFu9ll_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu7c(Test_aBFu9ll_BFu0ll_BFu7c, "aBFu9ll_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu7i");
    static aBFu9ll_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu7i(Test_aBFu9ll_BFu0ll_BFu7i, "aBFu9ll_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu7ll");
    static aBFu9ll_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu7ll(Test_aBFu9ll_BFu0ll_BFu7ll, "aBFu9ll_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu7s");
    static aBFu9ll_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu7s(Test_aBFu9ll_BFu0ll_BFu7s, "aBFu9ll_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu8c");
    static aBFu9ll_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu8c(Test_aBFu9ll_BFu0ll_BFu8c, "aBFu9ll_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu8i");
    static aBFu9ll_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu8i(Test_aBFu9ll_BFu0ll_BFu8i, "aBFu9ll_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu8ll");
    static aBFu9ll_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu8ll(Test_aBFu9ll_BFu0ll_BFu8ll, "aBFu9ll_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu8s");
    static aBFu9ll_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu8s(Test_aBFu9ll_BFu0ll_BFu8s, "aBFu9ll_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu9i");
    static aBFu9ll_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu9i(Test_aBFu9ll_BFu0ll_BFu9i, "aBFu9ll_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu9ll");
    static aBFu9ll_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu9ll(Test_aBFu9ll_BFu0ll_BFu9ll, "aBFu9ll_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_BFu9s");
    static aBFu9ll_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_BFu9s(Test_aBFu9ll_BFu0ll_BFu9s, "aBFu9ll_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_C()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_C");
    static aBFu9ll_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_C(Test_aBFu9ll_BFu0ll_C, "aBFu9ll_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_D()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_D");
    static aBFu9ll_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_D(Test_aBFu9ll_BFu0ll_D, "aBFu9ll_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_F()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_F");
    static aBFu9ll_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_F(Test_aBFu9ll_BFu0ll_F, "aBFu9ll_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_I()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_I");
    static aBFu9ll_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_I(Test_aBFu9ll_BFu0ll_I, "aBFu9ll_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Ip");
    static aBFu9ll_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9ll_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Ip(Test_aBFu9ll_BFu0ll_Ip, "aBFu9ll_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_L()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_L");
    static aBFu9ll_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_L(Test_aBFu9ll_BFu0ll_L, "aBFu9ll_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_S()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_S");
    static aBFu9ll_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_S(Test_aBFu9ll_BFu0ll_S, "aBFu9ll_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Uc");
    static aBFu9ll_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9ll_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Uc(Test_aBFu9ll_BFu0ll_Uc, "aBFu9ll_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Ui");
    static aBFu9ll_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Ui(Test_aBFu9ll_BFu0ll_Ui, "aBFu9ll_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Ul");
    static aBFu9ll_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Ul(Test_aBFu9ll_BFu0ll_Ul, "aBFu9ll_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Us()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Us");
    static aBFu9ll_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Us(Test_aBFu9ll_BFu0ll_Us, "aBFu9ll_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu9ll_BFu0ll_Vp");
    static aBFu9ll_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9ll_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9ll_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0ll_Vp(Test_aBFu9ll_BFu0ll_Vp, "aBFu9ll_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu0s");
    static aBFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s(Test_aBFu9ll_BFu0s, "aBFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu0c");
    static aBFu9ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu0c(Test_aBFu9ll_BFu0s_BFu0c, "aBFu9ll_BFu0s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu0i");
    static aBFu9ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu0i(Test_aBFu9ll_BFu0s_BFu0i, "aBFu9ll_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu0ll");
    static aBFu9ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu0ll(Test_aBFu9ll_BFu0s_BFu0ll, "aBFu9ll_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu0s");
    static aBFu9ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu0s(Test_aBFu9ll_BFu0s_BFu0s, "aBFu9ll_BFu0s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu15i");
    static aBFu9ll_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu15i(Test_aBFu9ll_BFu0s_BFu15i, "aBFu9ll_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu15ll");
    static aBFu9ll_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu15ll(Test_aBFu9ll_BFu0s_BFu15ll, "aBFu9ll_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu15s");
    static aBFu9ll_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9ll_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu15s(Test_aBFu9ll_BFu0s_BFu15s, "aBFu9ll_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu16i");
    static aBFu9ll_BFu0s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu16i(Test_aBFu9ll_BFu0s_BFu16i, "aBFu9ll_BFu0s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu16ll");
    static aBFu9ll_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu16ll(Test_aBFu9ll_BFu0s_BFu16ll, "aBFu9ll_BFu0s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu16s");
    static aBFu9ll_BFu0s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9ll_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu16s(Test_aBFu9ll_BFu0s_BFu16s, "aBFu9ll_BFu0s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu17i");
    static aBFu9ll_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu17i(Test_aBFu9ll_BFu0s_BFu17i, "aBFu9ll_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu17ll");
    static aBFu9ll_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9ll_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9ll_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu17ll(Test_aBFu9ll_BFu0s_BFu17ll, "aBFu9ll_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu1c");
    static aBFu9ll_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu1c(Test_aBFu9ll_BFu0s_BFu1c, "aBFu9ll_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu1i");
    static aBFu9ll_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu1i(Test_aBFu9ll_BFu0s_BFu1i, "aBFu9ll_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu1ll");
    static aBFu9ll_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu1ll(Test_aBFu9ll_BFu0s_BFu1ll, "aBFu9ll_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu1s");
    static aBFu9ll_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9ll_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu1s(Test_aBFu9ll_BFu0s_BFu1s, "aBFu9ll_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu31i");
    static aBFu9ll_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu31i(Test_aBFu9ll_BFu0s_BFu31i, "aBFu9ll_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu31ll");
    static aBFu9ll_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9ll_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu31ll(Test_aBFu9ll_BFu0s_BFu31ll, "aBFu9ll_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu32i");
    static aBFu9ll_BFu0s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu32i(Test_aBFu9ll_BFu0s_BFu32i, "aBFu9ll_BFu0s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu32ll");
    static aBFu9ll_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9ll_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu32ll(Test_aBFu9ll_BFu0s_BFu32ll, "aBFu9ll_BFu0s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu33");
    static aBFu9ll_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9ll_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9ll_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu33(Test_aBFu9ll_BFu0s_BFu33, "aBFu9ll_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu7c");
    static aBFu9ll_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu7c(Test_aBFu9ll_BFu0s_BFu7c, "aBFu9ll_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu7i");
    static aBFu9ll_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu7i(Test_aBFu9ll_BFu0s_BFu7i, "aBFu9ll_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu7ll");
    static aBFu9ll_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu7ll(Test_aBFu9ll_BFu0s_BFu7ll, "aBFu9ll_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu7s");
    static aBFu9ll_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9ll_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9ll_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu7s(Test_aBFu9ll_BFu0s_BFu7s, "aBFu9ll_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu8c");
    static aBFu9ll_BFu0s_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu8c(Test_aBFu9ll_BFu0s_BFu8c, "aBFu9ll_BFu0s_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu8i");
    static aBFu9ll_BFu0s_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu8i(Test_aBFu9ll_BFu0s_BFu8i, "aBFu9ll_BFu0s_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu8ll");
    static aBFu9ll_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu8ll(Test_aBFu9ll_BFu0s_BFu8ll, "aBFu9ll_BFu0s_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu8s");
    static aBFu9ll_BFu0s_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9ll_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu8s(Test_aBFu9ll_BFu0s_BFu8s, "aBFu9ll_BFu0s_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu9i");
    static aBFu9ll_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu9i(Test_aBFu9ll_BFu0s_BFu9i, "aBFu9ll_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu9ll");
    static aBFu9ll_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu9ll(Test_aBFu9ll_BFu0s_BFu9ll, "aBFu9ll_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu9ll_BFu0s_BFu9s");
    static aBFu9ll_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_BFu9s(Test_aBFu9ll_BFu0s_BFu9s, "aBFu9ll_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_C()
{
  {
    init_simple_test("aBFu9ll_BFu0s_C");
    static aBFu9ll_BFu0s_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_C");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_C(Test_aBFu9ll_BFu0s_C, "aBFu9ll_BFu0s_C", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_D()
{
  {
    init_simple_test("aBFu9ll_BFu0s_D");
    static aBFu9ll_BFu0s_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_D");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_D(Test_aBFu9ll_BFu0s_D, "aBFu9ll_BFu0s_D", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_F()
{
  {
    init_simple_test("aBFu9ll_BFu0s_F");
    static aBFu9ll_BFu0s_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_F");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_F(Test_aBFu9ll_BFu0s_F, "aBFu9ll_BFu0s_F", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_I()
{
  {
    init_simple_test("aBFu9ll_BFu0s_I");
    static aBFu9ll_BFu0s_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_I");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_I(Test_aBFu9ll_BFu0s_I, "aBFu9ll_BFu0s_I", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Ip()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Ip");
    static aBFu9ll_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Ip");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Ip(Test_aBFu9ll_BFu0s_Ip, "aBFu9ll_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_L()
{
  {
    init_simple_test("aBFu9ll_BFu0s_L");
    static aBFu9ll_BFu0s_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_L");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_L(Test_aBFu9ll_BFu0s_L, "aBFu9ll_BFu0s_L", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_S()
{
  {
    init_simple_test("aBFu9ll_BFu0s_S");
    static aBFu9ll_BFu0s_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_S");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_S(Test_aBFu9ll_BFu0s_S, "aBFu9ll_BFu0s_S", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Uc()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Uc");
    static aBFu9ll_BFu0s_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Uc");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Uc(Test_aBFu9ll_BFu0s_Uc, "aBFu9ll_BFu0s_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Ui()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Ui");
    static aBFu9ll_BFu0s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Ui");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Ui(Test_aBFu9ll_BFu0s_Ui, "aBFu9ll_BFu0s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Ul()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Ul");
    static aBFu9ll_BFu0s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Ul");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Ul(Test_aBFu9ll_BFu0s_Ul, "aBFu9ll_BFu0s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Us()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Us");
    static aBFu9ll_BFu0s_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Us");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Us(Test_aBFu9ll_BFu0s_Us, "aBFu9ll_BFu0s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu0s_Vp()
{
  {
    init_simple_test("aBFu9ll_BFu0s_Vp");
    static aBFu9ll_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu0s_Vp");
    check_field_offset(lv, v2, 2, "aBFu9ll_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu0s_Vp(Test_aBFu9ll_BFu0s_Vp, "aBFu9ll_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu15i_BFu0c");
    static aBFu9ll_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15i_BFu0c(Test_aBFu9ll_BFu15i_BFu0c, "aBFu9ll_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu15i_BFu0i");
    static aBFu9ll_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15i_BFu0i(Test_aBFu9ll_BFu15i_BFu0i, "aBFu9ll_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu15i_BFu0ll");
    static aBFu9ll_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15i_BFu0ll(Test_aBFu9ll_BFu15i_BFu0ll, "aBFu9ll_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu15i_BFu0s");
    static aBFu9ll_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15i_BFu0s(Test_aBFu9ll_BFu15i_BFu0s, "aBFu9ll_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu15ll_BFu0c");
    static aBFu9ll_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15ll_BFu0c(Test_aBFu9ll_BFu15ll_BFu0c, "aBFu9ll_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu15ll_BFu0i");
    static aBFu9ll_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15ll_BFu0i(Test_aBFu9ll_BFu15ll_BFu0i, "aBFu9ll_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu15ll_BFu0ll");
    static aBFu9ll_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15ll_BFu0ll(Test_aBFu9ll_BFu15ll_BFu0ll, "aBFu9ll_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu15ll_BFu0s");
    static aBFu9ll_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15ll_BFu0s(Test_aBFu9ll_BFu15ll_BFu0s, "aBFu9ll_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu15s_BFu0c");
    static aBFu9ll_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15s_BFu0c(Test_aBFu9ll_BFu15s_BFu0c, "aBFu9ll_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu15s_BFu0i");
    static aBFu9ll_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15s_BFu0i(Test_aBFu9ll_BFu15s_BFu0i, "aBFu9ll_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu15s_BFu0ll");
    static aBFu9ll_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15s_BFu0ll(Test_aBFu9ll_BFu15s_BFu0ll, "aBFu9ll_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu15s_BFu0s");
    static aBFu9ll_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9ll_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu15s_BFu0s(Test_aBFu9ll_BFu15s_BFu0s, "aBFu9ll_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu16i_BFu0c");
    static aBFu9ll_BFu16i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16i_BFu0c(Test_aBFu9ll_BFu16i_BFu0c, "aBFu9ll_BFu16i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu16i_BFu0i");
    static aBFu9ll_BFu16i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16i_BFu0i(Test_aBFu9ll_BFu16i_BFu0i, "aBFu9ll_BFu16i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu16i_BFu0ll");
    static aBFu9ll_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16i_BFu0ll(Test_aBFu9ll_BFu16i_BFu0ll, "aBFu9ll_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu16i_BFu0s");
    static aBFu9ll_BFu16i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16i_BFu0s(Test_aBFu9ll_BFu16i_BFu0s, "aBFu9ll_BFu16i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu16ll_BFu0c");
    static aBFu9ll_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16ll_BFu0c(Test_aBFu9ll_BFu16ll_BFu0c, "aBFu9ll_BFu16ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu16ll_BFu0i");
    static aBFu9ll_BFu16ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16ll_BFu0i(Test_aBFu9ll_BFu16ll_BFu0i, "aBFu9ll_BFu16ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu16ll_BFu0ll");
    static aBFu9ll_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16ll_BFu0ll(Test_aBFu9ll_BFu16ll_BFu0ll, "aBFu9ll_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu16ll_BFu0s");
    static aBFu9ll_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16ll_BFu0s(Test_aBFu9ll_BFu16ll_BFu0s, "aBFu9ll_BFu16ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu16s_BFu0c");
    static aBFu9ll_BFu16s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16s_BFu0c(Test_aBFu9ll_BFu16s_BFu0c, "aBFu9ll_BFu16s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu16s_BFu0i");
    static aBFu9ll_BFu16s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16s_BFu0i(Test_aBFu9ll_BFu16s_BFu0i, "aBFu9ll_BFu16s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu16s_BFu0ll");
    static aBFu9ll_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16s_BFu0ll(Test_aBFu9ll_BFu16s_BFu0ll, "aBFu9ll_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu16s_BFu0s");
    static aBFu9ll_BFu16s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9ll_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu16s_BFu0s(Test_aBFu9ll_BFu16s_BFu0s, "aBFu9ll_BFu16s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu17i_BFu0c");
    static aBFu9ll_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17i_BFu0c(Test_aBFu9ll_BFu17i_BFu0c, "aBFu9ll_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu17i_BFu0i");
    static aBFu9ll_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17i_BFu0i(Test_aBFu9ll_BFu17i_BFu0i, "aBFu9ll_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu17i_BFu0ll");
    static aBFu9ll_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17i_BFu0ll(Test_aBFu9ll_BFu17i_BFu0ll, "aBFu9ll_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu17i_BFu0s");
    static aBFu9ll_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17i_BFu0s(Test_aBFu9ll_BFu17i_BFu0s, "aBFu9ll_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu17ll_BFu0c");
    static aBFu9ll_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17ll_BFu0c(Test_aBFu9ll_BFu17ll_BFu0c, "aBFu9ll_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu17ll_BFu0i");
    static aBFu9ll_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17ll_BFu0i(Test_aBFu9ll_BFu17ll_BFu0i, "aBFu9ll_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu17ll_BFu0ll");
    static aBFu9ll_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17ll_BFu0ll(Test_aBFu9ll_BFu17ll_BFu0ll, "aBFu9ll_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu17ll_BFu0s");
    static aBFu9ll_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9ll_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu17ll_BFu0s(Test_aBFu9ll_BFu17ll_BFu0s, "aBFu9ll_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu1c_BFu0c");
    static aBFu9ll_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1c_BFu0c(Test_aBFu9ll_BFu1c_BFu0c, "aBFu9ll_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu1c_BFu0i");
    static aBFu9ll_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1c_BFu0i(Test_aBFu9ll_BFu1c_BFu0i, "aBFu9ll_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu1c_BFu0ll");
    static aBFu9ll_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1c_BFu0ll(Test_aBFu9ll_BFu1c_BFu0ll, "aBFu9ll_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu1c_BFu0s");
    static aBFu9ll_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1c_BFu0s(Test_aBFu9ll_BFu1c_BFu0s, "aBFu9ll_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu1i_BFu0c");
    static aBFu9ll_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1i_BFu0c(Test_aBFu9ll_BFu1i_BFu0c, "aBFu9ll_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu1i_BFu0i");
    static aBFu9ll_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1i_BFu0i(Test_aBFu9ll_BFu1i_BFu0i, "aBFu9ll_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu1i_BFu0ll");
    static aBFu9ll_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1i_BFu0ll(Test_aBFu9ll_BFu1i_BFu0ll, "aBFu9ll_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu1i_BFu0s");
    static aBFu9ll_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1i_BFu0s(Test_aBFu9ll_BFu1i_BFu0s, "aBFu9ll_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu1ll_BFu0c");
    static aBFu9ll_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1ll_BFu0c(Test_aBFu9ll_BFu1ll_BFu0c, "aBFu9ll_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu1ll_BFu0i");
    static aBFu9ll_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1ll_BFu0i(Test_aBFu9ll_BFu1ll_BFu0i, "aBFu9ll_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu1ll_BFu0ll");
    static aBFu9ll_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1ll_BFu0ll(Test_aBFu9ll_BFu1ll_BFu0ll, "aBFu9ll_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu1ll_BFu0s");
    static aBFu9ll_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1ll_BFu0s(Test_aBFu9ll_BFu1ll_BFu0s, "aBFu9ll_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu1s_BFu0c");
    static aBFu9ll_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1s_BFu0c(Test_aBFu9ll_BFu1s_BFu0c, "aBFu9ll_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu1s_BFu0i");
    static aBFu9ll_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1s_BFu0i(Test_aBFu9ll_BFu1s_BFu0i, "aBFu9ll_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu1s_BFu0ll");
    static aBFu9ll_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1s_BFu0ll(Test_aBFu9ll_BFu1s_BFu0ll, "aBFu9ll_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu1s_BFu0s");
    static aBFu9ll_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9ll_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu1s_BFu0s(Test_aBFu9ll_BFu1s_BFu0s, "aBFu9ll_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu31i_BFu0c");
    static aBFu9ll_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9ll_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31i_BFu0c(Test_aBFu9ll_BFu31i_BFu0c, "aBFu9ll_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu31i_BFu0i");
    static aBFu9ll_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31i_BFu0i(Test_aBFu9ll_BFu31i_BFu0i, "aBFu9ll_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu31i_BFu0ll");
    static aBFu9ll_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31i_BFu0ll(Test_aBFu9ll_BFu31i_BFu0ll, "aBFu9ll_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu31i_BFu0s");
    static aBFu9ll_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31i_BFu0s(Test_aBFu9ll_BFu31i_BFu0s, "aBFu9ll_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu31ll_BFu0c");
    static aBFu9ll_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9ll_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31ll_BFu0c(Test_aBFu9ll_BFu31ll_BFu0c, "aBFu9ll_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu31ll_BFu0i");
    static aBFu9ll_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31ll_BFu0i(Test_aBFu9ll_BFu31ll_BFu0i, "aBFu9ll_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu31ll_BFu0ll");
    static aBFu9ll_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31ll_BFu0ll(Test_aBFu9ll_BFu31ll_BFu0ll, "aBFu9ll_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu31ll_BFu0s");
    static aBFu9ll_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9ll_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9ll_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu31ll_BFu0s(Test_aBFu9ll_BFu31ll_BFu0s, "aBFu9ll_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu32i_BFu0c");
    static aBFu9ll_BFu32i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32i_BFu0c(Test_aBFu9ll_BFu32i_BFu0c, "aBFu9ll_BFu32i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu32i_BFu0i");
    static aBFu9ll_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32i_BFu0i(Test_aBFu9ll_BFu32i_BFu0i, "aBFu9ll_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu32i_BFu0ll");
    static aBFu9ll_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32i_BFu0ll(Test_aBFu9ll_BFu32i_BFu0ll, "aBFu9ll_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu32i_BFu0s");
    static aBFu9ll_BFu32i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32i_BFu0s(Test_aBFu9ll_BFu32i_BFu0s, "aBFu9ll_BFu32i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu32ll_BFu0c");
    static aBFu9ll_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32ll_BFu0c(Test_aBFu9ll_BFu32ll_BFu0c, "aBFu9ll_BFu32ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu32ll_BFu0i");
    static aBFu9ll_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32ll_BFu0i(Test_aBFu9ll_BFu32ll_BFu0i, "aBFu9ll_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu32ll_BFu0ll");
    static aBFu9ll_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32ll_BFu0ll(Test_aBFu9ll_BFu32ll_BFu0ll, "aBFu9ll_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu32ll_BFu0s");
    static aBFu9ll_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9ll_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu32ll_BFu0s(Test_aBFu9ll_BFu32ll_BFu0s, "aBFu9ll_BFu32ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu33_BFu0c");
    static aBFu9ll_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9ll_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu33_BFu0c(Test_aBFu9ll_BFu33_BFu0c, "aBFu9ll_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu33_BFu0i");
    static aBFu9ll_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9ll_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu33_BFu0i(Test_aBFu9ll_BFu33_BFu0i, "aBFu9ll_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu33_BFu0ll");
    static aBFu9ll_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9ll_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu33_BFu0ll(Test_aBFu9ll_BFu33_BFu0ll, "aBFu9ll_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu33_BFu0s");
    static aBFu9ll_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9ll_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu33_BFu0s(Test_aBFu9ll_BFu33_BFu0s, "aBFu9ll_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu7c_BFu0c");
    static aBFu9ll_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7c_BFu0c(Test_aBFu9ll_BFu7c_BFu0c, "aBFu9ll_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu7c_BFu0i");
    static aBFu9ll_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7c_BFu0i(Test_aBFu9ll_BFu7c_BFu0i, "aBFu9ll_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu7c_BFu0ll");
    static aBFu9ll_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7c_BFu0ll(Test_aBFu9ll_BFu7c_BFu0ll, "aBFu9ll_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu7c_BFu0s");
    static aBFu9ll_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7c_BFu0s(Test_aBFu9ll_BFu7c_BFu0s, "aBFu9ll_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu7i_BFu0c");
    static aBFu9ll_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7i_BFu0c(Test_aBFu9ll_BFu7i_BFu0c, "aBFu9ll_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu7i_BFu0i");
    static aBFu9ll_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7i_BFu0i(Test_aBFu9ll_BFu7i_BFu0i, "aBFu9ll_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu7i_BFu0ll");
    static aBFu9ll_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7i_BFu0ll(Test_aBFu9ll_BFu7i_BFu0ll, "aBFu9ll_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu7i_BFu0s");
    static aBFu9ll_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7i_BFu0s(Test_aBFu9ll_BFu7i_BFu0s, "aBFu9ll_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu7ll_BFu0c");
    static aBFu9ll_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7ll_BFu0c(Test_aBFu9ll_BFu7ll_BFu0c, "aBFu9ll_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu7ll_BFu0i");
    static aBFu9ll_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7ll_BFu0i(Test_aBFu9ll_BFu7ll_BFu0i, "aBFu9ll_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu7ll_BFu0ll");
    static aBFu9ll_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7ll_BFu0ll(Test_aBFu9ll_BFu7ll_BFu0ll, "aBFu9ll_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu7ll_BFu0s");
    static aBFu9ll_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7ll_BFu0s(Test_aBFu9ll_BFu7ll_BFu0s, "aBFu9ll_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu7s_BFu0c");
    static aBFu9ll_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7s_BFu0c(Test_aBFu9ll_BFu7s_BFu0c, "aBFu9ll_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu7s_BFu0i");
    static aBFu9ll_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7s_BFu0i(Test_aBFu9ll_BFu7s_BFu0i, "aBFu9ll_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu7s_BFu0ll");
    static aBFu9ll_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7s_BFu0ll(Test_aBFu9ll_BFu7s_BFu0ll, "aBFu9ll_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu7s_BFu0s");
    static aBFu9ll_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9ll_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9ll_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu7s_BFu0s(Test_aBFu9ll_BFu7s_BFu0s, "aBFu9ll_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu8c_BFu0c");
    static aBFu9ll_BFu8c_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8c_BFu0c(Test_aBFu9ll_BFu8c_BFu0c, "aBFu9ll_BFu8c_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu8c_BFu0i");
    static aBFu9ll_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8c_BFu0i(Test_aBFu9ll_BFu8c_BFu0i, "aBFu9ll_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu8c_BFu0ll");
    static aBFu9ll_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8c_BFu0ll(Test_aBFu9ll_BFu8c_BFu0ll, "aBFu9ll_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu8c_BFu0s");
    static aBFu9ll_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8c_BFu0s(Test_aBFu9ll_BFu8c_BFu0s, "aBFu9ll_BFu8c_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu8i_BFu0c");
    static aBFu9ll_BFu8i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8i_BFu0c(Test_aBFu9ll_BFu8i_BFu0c, "aBFu9ll_BFu8i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu8i_BFu0i");
    static aBFu9ll_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8i_BFu0i(Test_aBFu9ll_BFu8i_BFu0i, "aBFu9ll_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu8i_BFu0ll");
    static aBFu9ll_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8i_BFu0ll(Test_aBFu9ll_BFu8i_BFu0ll, "aBFu9ll_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu8i_BFu0s");
    static aBFu9ll_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8i_BFu0s(Test_aBFu9ll_BFu8i_BFu0s, "aBFu9ll_BFu8i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu8ll_BFu0c");
    static aBFu9ll_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8ll_BFu0c(Test_aBFu9ll_BFu8ll_BFu0c, "aBFu9ll_BFu8ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu8ll_BFu0i");
    static aBFu9ll_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8ll_BFu0i(Test_aBFu9ll_BFu8ll_BFu0i, "aBFu9ll_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu8ll_BFu0ll");
    static aBFu9ll_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8ll_BFu0ll(Test_aBFu9ll_BFu8ll_BFu0ll, "aBFu9ll_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu8ll_BFu0s");
    static aBFu9ll_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8ll_BFu0s(Test_aBFu9ll_BFu8ll_BFu0s, "aBFu9ll_BFu8ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu8s_BFu0c");
    static aBFu9ll_BFu8s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8s_BFu0c(Test_aBFu9ll_BFu8s_BFu0c, "aBFu9ll_BFu8s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu8s_BFu0i");
    static aBFu9ll_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8s_BFu0i(Test_aBFu9ll_BFu8s_BFu0i, "aBFu9ll_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu8s_BFu0ll");
    static aBFu9ll_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8s_BFu0ll(Test_aBFu9ll_BFu8s_BFu0ll, "aBFu9ll_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu8s_BFu0s");
    static aBFu9ll_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9ll_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu8s_BFu0s(Test_aBFu9ll_BFu8s_BFu0s, "aBFu9ll_BFu8s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu9i_BFu0c");
    static aBFu9ll_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9i_BFu0c(Test_aBFu9ll_BFu9i_BFu0c, "aBFu9ll_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu9i_BFu0i");
    static aBFu9ll_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9i_BFu0i(Test_aBFu9ll_BFu9i_BFu0i, "aBFu9ll_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu9i_BFu0ll");
    static aBFu9ll_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9i_BFu0ll(Test_aBFu9ll_BFu9i_BFu0ll, "aBFu9ll_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu9i_BFu0s");
    static aBFu9ll_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9i_BFu0s(Test_aBFu9ll_BFu9i_BFu0s, "aBFu9ll_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu9ll_BFu0c");
    static aBFu9ll_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9ll_BFu0c(Test_aBFu9ll_BFu9ll_BFu0c, "aBFu9ll_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu9ll_BFu0i");
    static aBFu9ll_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9ll_BFu0i(Test_aBFu9ll_BFu9ll_BFu0i, "aBFu9ll_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu9ll_BFu0ll");
    static aBFu9ll_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9ll_BFu0ll(Test_aBFu9ll_BFu9ll_BFu0ll, "aBFu9ll_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu9ll_BFu0s");
    static aBFu9ll_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9ll_BFu0s(Test_aBFu9ll_BFu9ll_BFu0s, "aBFu9ll_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu9ll_BFu9s_BFu0c");
    static aBFu9ll_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9s_BFu0c(Test_aBFu9ll_BFu9s_BFu0c, "aBFu9ll_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu9ll_BFu9s_BFu0i");
    static aBFu9ll_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9s_BFu0i(Test_aBFu9ll_BFu9s_BFu0i, "aBFu9ll_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_BFu9s_BFu0ll");
    static aBFu9ll_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9s_BFu0ll(Test_aBFu9ll_BFu9s_BFu0ll, "aBFu9ll_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu9ll_BFu9s_BFu0s");
    static aBFu9ll_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9ll_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9ll_BFu9s_BFu0s(Test_aBFu9ll_BFu9s_BFu0s, "aBFu9ll_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_C_BFu0c()
{
  {
    init_simple_test("aBFu9ll_C_BFu0c");
    static aBFu9ll_C_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_C_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_C_BFu0c(Test_aBFu9ll_C_BFu0c, "aBFu9ll_C_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_C_BFu0i()
{
  {
    init_simple_test("aBFu9ll_C_BFu0i");
    static aBFu9ll_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_C_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_C_BFu0i(Test_aBFu9ll_C_BFu0i, "aBFu9ll_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_C_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_C_BFu0ll");
    static aBFu9ll_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_C_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_C_BFu0ll(Test_aBFu9ll_C_BFu0ll, "aBFu9ll_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_C_BFu0s()
{
  {
    init_simple_test("aBFu9ll_C_BFu0s");
    static aBFu9ll_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_C_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_C_BFu0s(Test_aBFu9ll_C_BFu0s, "aBFu9ll_C_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_D_BFu0c()
{
  {
    init_simple_test("aBFu9ll_D_BFu0c");
    static aBFu9ll_D_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_D_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_D_BFu0c(Test_aBFu9ll_D_BFu0c, "aBFu9ll_D_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_D_BFu0i()
{
  {
    init_simple_test("aBFu9ll_D_BFu0i");
    static aBFu9ll_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_D_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_D_BFu0i(Test_aBFu9ll_D_BFu0i, "aBFu9ll_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_D_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_D_BFu0ll");
    static aBFu9ll_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_D_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_D_BFu0ll(Test_aBFu9ll_D_BFu0ll, "aBFu9ll_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_D_BFu0s()
{
  {
    init_simple_test("aBFu9ll_D_BFu0s");
    static aBFu9ll_D_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_D_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_D_BFu0s(Test_aBFu9ll_D_BFu0s, "aBFu9ll_D_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_F_BFu0c()
{
  {
    init_simple_test("aBFu9ll_F_BFu0c");
    static aBFu9ll_F_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_F_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_F_BFu0c(Test_aBFu9ll_F_BFu0c, "aBFu9ll_F_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_F_BFu0i()
{
  {
    init_simple_test("aBFu9ll_F_BFu0i");
    static aBFu9ll_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_F_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_F_BFu0i(Test_aBFu9ll_F_BFu0i, "aBFu9ll_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_F_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_F_BFu0ll");
    static aBFu9ll_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_F_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_F_BFu0ll(Test_aBFu9ll_F_BFu0ll, "aBFu9ll_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_F_BFu0s()
{
  {
    init_simple_test("aBFu9ll_F_BFu0s");
    static aBFu9ll_F_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_F_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_F_BFu0s(Test_aBFu9ll_F_BFu0s, "aBFu9ll_F_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_I_BFu0c()
{
  {
    init_simple_test("aBFu9ll_I_BFu0c");
    static aBFu9ll_I_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_I_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_I_BFu0c(Test_aBFu9ll_I_BFu0c, "aBFu9ll_I_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_I_BFu0i()
{
  {
    init_simple_test("aBFu9ll_I_BFu0i");
    static aBFu9ll_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_I_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_I_BFu0i(Test_aBFu9ll_I_BFu0i, "aBFu9ll_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_I_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_I_BFu0ll");
    static aBFu9ll_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_I_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_I_BFu0ll(Test_aBFu9ll_I_BFu0ll, "aBFu9ll_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_I_BFu0s()
{
  {
    init_simple_test("aBFu9ll_I_BFu0s");
    static aBFu9ll_I_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_I_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_I_BFu0s(Test_aBFu9ll_I_BFu0s, "aBFu9ll_I_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ip_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Ip_BFu0c");
    static aBFu9ll_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ip_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ip_BFu0c(Test_aBFu9ll_Ip_BFu0c, "aBFu9ll_Ip_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ip_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Ip_BFu0i");
    static aBFu9ll_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ip_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ip_BFu0i(Test_aBFu9ll_Ip_BFu0i, "aBFu9ll_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Ip_BFu0ll");
    static aBFu9ll_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9ll_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ip_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ip_BFu0ll(Test_aBFu9ll_Ip_BFu0ll, "aBFu9ll_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ip_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Ip_BFu0s");
    static aBFu9ll_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ip_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ip_BFu0s(Test_aBFu9ll_Ip_BFu0s, "aBFu9ll_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_L_BFu0c()
{
  {
    init_simple_test("aBFu9ll_L_BFu0c");
    static aBFu9ll_L_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_L_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_L_BFu0c(Test_aBFu9ll_L_BFu0c, "aBFu9ll_L_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_L_BFu0i()
{
  {
    init_simple_test("aBFu9ll_L_BFu0i");
    static aBFu9ll_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_L_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_L_BFu0i(Test_aBFu9ll_L_BFu0i, "aBFu9ll_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_L_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_L_BFu0ll");
    static aBFu9ll_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_L_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_L_BFu0ll(Test_aBFu9ll_L_BFu0ll, "aBFu9ll_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_L_BFu0s()
{
  {
    init_simple_test("aBFu9ll_L_BFu0s");
    static aBFu9ll_L_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_L_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_L_BFu0s(Test_aBFu9ll_L_BFu0s, "aBFu9ll_L_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_S_BFu0c()
{
  {
    init_simple_test("aBFu9ll_S_BFu0c");
    static aBFu9ll_S_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_S_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_S_BFu0c(Test_aBFu9ll_S_BFu0c, "aBFu9ll_S_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_S_BFu0i()
{
  {
    init_simple_test("aBFu9ll_S_BFu0i");
    static aBFu9ll_S_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_S_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_S_BFu0i(Test_aBFu9ll_S_BFu0i, "aBFu9ll_S_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_S_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_S_BFu0ll");
    static aBFu9ll_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_S_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_S_BFu0ll(Test_aBFu9ll_S_BFu0ll, "aBFu9ll_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_S_BFu0s()
{
  {
    init_simple_test("aBFu9ll_S_BFu0s");
    static aBFu9ll_S_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_S_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_S_BFu0s(Test_aBFu9ll_S_BFu0s, "aBFu9ll_S_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Uc_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Uc_BFu0c");
    static aBFu9ll_Uc_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9ll_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Uc_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Uc_BFu0c(Test_aBFu9ll_Uc_BFu0c, "aBFu9ll_Uc_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Uc_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Uc_BFu0i");
    static aBFu9ll_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Uc_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Uc_BFu0i(Test_aBFu9ll_Uc_BFu0i, "aBFu9ll_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Uc_BFu0ll");
    static aBFu9ll_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Uc_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Uc_BFu0ll(Test_aBFu9ll_Uc_BFu0ll, "aBFu9ll_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Uc_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Uc_BFu0s");
    static aBFu9ll_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9ll_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Uc_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Uc_BFu0s(Test_aBFu9ll_Uc_BFu0s, "aBFu9ll_Uc_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ui_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Ui_BFu0c");
    static aBFu9ll_Ui_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ui_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ui_BFu0c(Test_aBFu9ll_Ui_BFu0c, "aBFu9ll_Ui_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ui_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Ui_BFu0i");
    static aBFu9ll_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ui_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ui_BFu0i(Test_aBFu9ll_Ui_BFu0i, "aBFu9ll_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Ui_BFu0ll");
    static aBFu9ll_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9ll_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ui_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ui_BFu0ll(Test_aBFu9ll_Ui_BFu0ll, "aBFu9ll_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ui_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Ui_BFu0s");
    static aBFu9ll_Ui_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9ll_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ui_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ui_BFu0s(Test_aBFu9ll_Ui_BFu0s, "aBFu9ll_Ui_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ul_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Ul_BFu0c");
    static aBFu9ll_Ul_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ul_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ul_BFu0c(Test_aBFu9ll_Ul_BFu0c, "aBFu9ll_Ul_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ul_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Ul_BFu0i");
    static aBFu9ll_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9ll_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ul_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ul_BFu0i(Test_aBFu9ll_Ul_BFu0i, "aBFu9ll_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Ul_BFu0ll");
    static aBFu9ll_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9ll_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ul_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ul_BFu0ll(Test_aBFu9ll_Ul_BFu0ll, "aBFu9ll_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Ul_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Ul_BFu0s");
    static aBFu9ll_Ul_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9ll_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Ul_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Ul_BFu0s(Test_aBFu9ll_Ul_BFu0s, "aBFu9ll_Ul_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Us_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Us_BFu0c");
    static aBFu9ll_Us_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Us_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Us_BFu0c(Test_aBFu9ll_Us_BFu0c, "aBFu9ll_Us_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Us_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Us_BFu0i");
    static aBFu9ll_Us_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Us_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Us_BFu0i(Test_aBFu9ll_Us_BFu0i, "aBFu9ll_Us_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Us_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Us_BFu0ll");
    static aBFu9ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9ll_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Us_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Us_BFu0ll(Test_aBFu9ll_Us_BFu0ll, "aBFu9ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Us_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Us_BFu0s");
    static aBFu9ll_Us_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9ll_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Us_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Us_BFu0s(Test_aBFu9ll_Us_BFu0s, "aBFu9ll_Us_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Vp_BFu0c()
{
  {
    init_simple_test("aBFu9ll_Vp_BFu0c");
    static aBFu9ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Vp_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9ll_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Vp_BFu0c(Test_aBFu9ll_Vp_BFu0c, "aBFu9ll_Vp_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Vp_BFu0i()
{
  {
    init_simple_test("aBFu9ll_Vp_BFu0i");
    static aBFu9ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9ll_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Vp_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9ll_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Vp_BFu0i(Test_aBFu9ll_Vp_BFu0i, "aBFu9ll_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu9ll_Vp_BFu0ll");
    static aBFu9ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9ll_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Vp_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9ll_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Vp_BFu0ll(Test_aBFu9ll_Vp_BFu0ll, "aBFu9ll_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9ll_Vp_BFu0s()
{
  {
    init_simple_test("aBFu9ll_Vp_BFu0s");
    static aBFu9ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9ll_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9ll_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9ll_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9ll_Vp_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9ll_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9ll_Vp_BFu0s(Test_aBFu9ll_Vp_BFu0s, "aBFu9ll_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu0c");
    static aBFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c(Test_aBFu9s_BFu0c, "aBFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu0c");
    static aBFu9s_BFu0c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu0c(Test_aBFu9s_BFu0c_BFu0c, "aBFu9s_BFu0c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu0i");
    static aBFu9s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu0i(Test_aBFu9s_BFu0c_BFu0i, "aBFu9s_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu0ll");
    static aBFu9s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu0ll(Test_aBFu9s_BFu0c_BFu0ll, "aBFu9s_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu0s");
    static aBFu9s_BFu0c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu0s(Test_aBFu9s_BFu0c_BFu0s, "aBFu9s_BFu0c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu15i");
    static aBFu9s_BFu0c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu15i(Test_aBFu9s_BFu0c_BFu15i, "aBFu9s_BFu0c_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu15ll");
    static aBFu9s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu15ll(Test_aBFu9s_BFu0c_BFu15ll, "aBFu9s_BFu0c_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu15s");
    static aBFu9s_BFu0c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu15s(Test_aBFu9s_BFu0c_BFu15s, "aBFu9s_BFu0c_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu16i");
    static aBFu9s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu16i(Test_aBFu9s_BFu0c_BFu16i, "aBFu9s_BFu0c_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu16ll");
    static aBFu9s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu16ll(Test_aBFu9s_BFu0c_BFu16ll, "aBFu9s_BFu0c_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu16s");
    static aBFu9s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu16s(Test_aBFu9s_BFu0c_BFu16s, "aBFu9s_BFu0c_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu17i");
    static aBFu9s_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu17i(Test_aBFu9s_BFu0c_BFu17i, "aBFu9s_BFu0c_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu17ll");
    static aBFu9s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu17ll(Test_aBFu9s_BFu0c_BFu17ll, "aBFu9s_BFu0c_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu1c");
    static aBFu9s_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu1c(Test_aBFu9s_BFu0c_BFu1c, "aBFu9s_BFu0c_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu1i");
    static aBFu9s_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu1i(Test_aBFu9s_BFu0c_BFu1i, "aBFu9s_BFu0c_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu1ll");
    static aBFu9s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu1ll(Test_aBFu9s_BFu0c_BFu1ll, "aBFu9s_BFu0c_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu1s");
    static aBFu9s_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu1s(Test_aBFu9s_BFu0c_BFu1s, "aBFu9s_BFu0c_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu31i");
    static aBFu9s_BFu0c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu31i(Test_aBFu9s_BFu0c_BFu31i, "aBFu9s_BFu0c_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu31ll");
    static aBFu9s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu31ll(Test_aBFu9s_BFu0c_BFu31ll, "aBFu9s_BFu0c_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu32i");
    static aBFu9s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu32i(Test_aBFu9s_BFu0c_BFu32i, "aBFu9s_BFu0c_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu32ll");
    static aBFu9s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu32ll(Test_aBFu9s_BFu0c_BFu32ll, "aBFu9s_BFu0c_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu33");
    static aBFu9s_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9s_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu33(Test_aBFu9s_BFu0c_BFu33, "aBFu9s_BFu0c_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu7c");
    static aBFu9s_BFu0c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu7c(Test_aBFu9s_BFu0c_BFu7c, "aBFu9s_BFu0c_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu7i");
    static aBFu9s_BFu0c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu7i(Test_aBFu9s_BFu0c_BFu7i, "aBFu9s_BFu0c_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu7ll");
    static aBFu9s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu7ll(Test_aBFu9s_BFu0c_BFu7ll, "aBFu9s_BFu0c_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu7s");
    static aBFu9s_BFu0c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu7s(Test_aBFu9s_BFu0c_BFu7s, "aBFu9s_BFu0c_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu8c");
    static aBFu9s_BFu0c_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu8c(Test_aBFu9s_BFu0c_BFu8c, "aBFu9s_BFu0c_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu8i");
    static aBFu9s_BFu0c_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu8i(Test_aBFu9s_BFu0c_BFu8i, "aBFu9s_BFu0c_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu8ll");
    static aBFu9s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu8ll(Test_aBFu9s_BFu0c_BFu8ll, "aBFu9s_BFu0c_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu8s");
    static aBFu9s_BFu0c_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu8s(Test_aBFu9s_BFu0c_BFu8s, "aBFu9s_BFu0c_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu9i");
    static aBFu9s_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu9i(Test_aBFu9s_BFu0c_BFu9i, "aBFu9s_BFu0c_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu9ll");
    static aBFu9s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu9ll(Test_aBFu9s_BFu0c_BFu9ll, "aBFu9s_BFu0c_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu9s_BFu0c_BFu9s");
    static aBFu9s_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_BFu9s(Test_aBFu9s_BFu0c_BFu9s, "aBFu9s_BFu0c_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_C()
{
  {
    init_simple_test("aBFu9s_BFu0c_C");
    static aBFu9s_BFu0c_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_C");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_C(Test_aBFu9s_BFu0c_C, "aBFu9s_BFu0c_C", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_D()
{
  {
    init_simple_test("aBFu9s_BFu0c_D");
    static aBFu9s_BFu0c_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_D");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_D(Test_aBFu9s_BFu0c_D, "aBFu9s_BFu0c_D", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_F()
{
  {
    init_simple_test("aBFu9s_BFu0c_F");
    static aBFu9s_BFu0c_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_F");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_F(Test_aBFu9s_BFu0c_F, "aBFu9s_BFu0c_F", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_I()
{
  {
    init_simple_test("aBFu9s_BFu0c_I");
    static aBFu9s_BFu0c_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_I");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_I(Test_aBFu9s_BFu0c_I, "aBFu9s_BFu0c_I", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Ip()
{
  {
    init_simple_test("aBFu9s_BFu0c_Ip");
    static aBFu9s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Ip");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Ip(Test_aBFu9s_BFu0c_Ip, "aBFu9s_BFu0c_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_L()
{
  {
    init_simple_test("aBFu9s_BFu0c_L");
    static aBFu9s_BFu0c_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_L");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_L(Test_aBFu9s_BFu0c_L, "aBFu9s_BFu0c_L", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_S()
{
  {
    init_simple_test("aBFu9s_BFu0c_S");
    static aBFu9s_BFu0c_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_S");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_S(Test_aBFu9s_BFu0c_S, "aBFu9s_BFu0c_S", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Uc()
{
  {
    init_simple_test("aBFu9s_BFu0c_Uc");
    static aBFu9s_BFu0c_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Uc");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Uc(Test_aBFu9s_BFu0c_Uc, "aBFu9s_BFu0c_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Ui()
{
  {
    init_simple_test("aBFu9s_BFu0c_Ui");
    static aBFu9s_BFu0c_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Ui");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Ui(Test_aBFu9s_BFu0c_Ui, "aBFu9s_BFu0c_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Ul()
{
  {
    init_simple_test("aBFu9s_BFu0c_Ul");
    static aBFu9s_BFu0c_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Ul");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Ul(Test_aBFu9s_BFu0c_Ul, "aBFu9s_BFu0c_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Us()
{
  {
    init_simple_test("aBFu9s_BFu0c_Us");
    static aBFu9s_BFu0c_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Us");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Us(Test_aBFu9s_BFu0c_Us, "aBFu9s_BFu0c_Us", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0c_Vp()
{
  {
    init_simple_test("aBFu9s_BFu0c_Vp");
    static aBFu9s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0c_Vp");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0c_Vp(Test_aBFu9s_BFu0c_Vp, "aBFu9s_BFu0c_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu0i");
    static aBFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i(Test_aBFu9s_BFu0i, "aBFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu0c");
    static aBFu9s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu0c(Test_aBFu9s_BFu0i_BFu0c, "aBFu9s_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu0i");
    static aBFu9s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu0i(Test_aBFu9s_BFu0i_BFu0i, "aBFu9s_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu0ll");
    static aBFu9s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu0ll(Test_aBFu9s_BFu0i_BFu0ll, "aBFu9s_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu0s");
    static aBFu9s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu0s(Test_aBFu9s_BFu0i_BFu0s, "aBFu9s_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu15i");
    static aBFu9s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu15i(Test_aBFu9s_BFu0i_BFu15i, "aBFu9s_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu15ll");
    static aBFu9s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu15ll(Test_aBFu9s_BFu0i_BFu15ll, "aBFu9s_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu15s");
    static aBFu9s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu15s(Test_aBFu9s_BFu0i_BFu15s, "aBFu9s_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu16i");
    static aBFu9s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu16i(Test_aBFu9s_BFu0i_BFu16i, "aBFu9s_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu16ll");
    static aBFu9s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu16ll(Test_aBFu9s_BFu0i_BFu16ll, "aBFu9s_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu16s");
    static aBFu9s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu16s(Test_aBFu9s_BFu0i_BFu16s, "aBFu9s_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu17i");
    static aBFu9s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9s_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu17i(Test_aBFu9s_BFu0i_BFu17i, "aBFu9s_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu17ll");
    static aBFu9s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu17ll(Test_aBFu9s_BFu0i_BFu17ll, "aBFu9s_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu1c");
    static aBFu9s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu1c(Test_aBFu9s_BFu0i_BFu1c, "aBFu9s_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu1i");
    static aBFu9s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu1i(Test_aBFu9s_BFu0i_BFu1i, "aBFu9s_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu1ll");
    static aBFu9s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu1ll(Test_aBFu9s_BFu0i_BFu1ll, "aBFu9s_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu1s");
    static aBFu9s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu1s(Test_aBFu9s_BFu0i_BFu1s, "aBFu9s_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu31i");
    static aBFu9s_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu31i(Test_aBFu9s_BFu0i_BFu31i, "aBFu9s_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu31ll");
    static aBFu9s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu31ll(Test_aBFu9s_BFu0i_BFu31ll, "aBFu9s_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu32i");
    static aBFu9s_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu32i(Test_aBFu9s_BFu0i_BFu32i, "aBFu9s_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu32ll");
    static aBFu9s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu32ll(Test_aBFu9s_BFu0i_BFu32ll, "aBFu9s_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu33");
    static aBFu9s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu9s_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu9s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu33(Test_aBFu9s_BFu0i_BFu33, "aBFu9s_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu7c");
    static aBFu9s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu7c(Test_aBFu9s_BFu0i_BFu7c, "aBFu9s_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu7i");
    static aBFu9s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu7i(Test_aBFu9s_BFu0i_BFu7i, "aBFu9s_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu7ll");
    static aBFu9s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu7ll(Test_aBFu9s_BFu0i_BFu7ll, "aBFu9s_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu7s");
    static aBFu9s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu7s(Test_aBFu9s_BFu0i_BFu7s, "aBFu9s_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu8c");
    static aBFu9s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu8c(Test_aBFu9s_BFu0i_BFu8c, "aBFu9s_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu8i");
    static aBFu9s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu8i(Test_aBFu9s_BFu0i_BFu8i, "aBFu9s_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu8ll");
    static aBFu9s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu8ll(Test_aBFu9s_BFu0i_BFu8ll, "aBFu9s_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu8s");
    static aBFu9s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu8s(Test_aBFu9s_BFu0i_BFu8s, "aBFu9s_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu9i");
    static aBFu9s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu9i(Test_aBFu9s_BFu0i_BFu9i, "aBFu9s_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu9ll");
    static aBFu9s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu9ll(Test_aBFu9s_BFu0i_BFu9ll, "aBFu9s_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu9s_BFu0i_BFu9s");
    static aBFu9s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_BFu9s(Test_aBFu9s_BFu0i_BFu9s, "aBFu9s_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_C()
{
  {
    init_simple_test("aBFu9s_BFu0i_C");
    static aBFu9s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_C(Test_aBFu9s_BFu0i_C, "aBFu9s_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_D()
{
  {
    init_simple_test("aBFu9s_BFu0i_D");
    static aBFu9s_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_D(Test_aBFu9s_BFu0i_D, "aBFu9s_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_F()
{
  {
    init_simple_test("aBFu9s_BFu0i_F");
    static aBFu9s_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_F(Test_aBFu9s_BFu0i_F, "aBFu9s_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_I()
{
  {
    init_simple_test("aBFu9s_BFu0i_I");
    static aBFu9s_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_I(Test_aBFu9s_BFu0i_I, "aBFu9s_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Ip()
{
  {
    init_simple_test("aBFu9s_BFu0i_Ip");
    static aBFu9s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Ip(Test_aBFu9s_BFu0i_Ip, "aBFu9s_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_L()
{
  {
    init_simple_test("aBFu9s_BFu0i_L");
    static aBFu9s_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_L(Test_aBFu9s_BFu0i_L, "aBFu9s_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_S()
{
  {
    init_simple_test("aBFu9s_BFu0i_S");
    static aBFu9s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_S(Test_aBFu9s_BFu0i_S, "aBFu9s_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Uc()
{
  {
    init_simple_test("aBFu9s_BFu0i_Uc");
    static aBFu9s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Uc(Test_aBFu9s_BFu0i_Uc, "aBFu9s_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Ui()
{
  {
    init_simple_test("aBFu9s_BFu0i_Ui");
    static aBFu9s_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Ui(Test_aBFu9s_BFu0i_Ui, "aBFu9s_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Ul()
{
  {
    init_simple_test("aBFu9s_BFu0i_Ul");
    static aBFu9s_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Ul(Test_aBFu9s_BFu0i_Ul, "aBFu9s_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Us()
{
  {
    init_simple_test("aBFu9s_BFu0i_Us");
    static aBFu9s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Us(Test_aBFu9s_BFu0i_Us, "aBFu9s_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0i_Vp()
{
  {
    init_simple_test("aBFu9s_BFu0i_Vp");
    static aBFu9s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu9s_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0i_Vp(Test_aBFu9s_BFu0i_Vp, "aBFu9s_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll");
    static aBFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll(Test_aBFu9s_BFu0ll, "aBFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu0c");
    static aBFu9s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu0c(Test_aBFu9s_BFu0ll_BFu0c, "aBFu9s_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu0i");
    static aBFu9s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu0i(Test_aBFu9s_BFu0ll_BFu0i, "aBFu9s_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu0ll");
    static aBFu9s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu0ll(Test_aBFu9s_BFu0ll_BFu0ll, "aBFu9s_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu0s");
    static aBFu9s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu0s(Test_aBFu9s_BFu0ll_BFu0s, "aBFu9s_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu15i");
    static aBFu9s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu15i(Test_aBFu9s_BFu0ll_BFu15i, "aBFu9s_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu15ll");
    static aBFu9s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu15ll(Test_aBFu9s_BFu0ll_BFu15ll, "aBFu9s_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu15s");
    static aBFu9s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu15s(Test_aBFu9s_BFu0ll_BFu15s, "aBFu9s_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu16i");
    static aBFu9s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu16i(Test_aBFu9s_BFu0ll_BFu16i, "aBFu9s_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu16ll");
    static aBFu9s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu16ll(Test_aBFu9s_BFu0ll_BFu16ll, "aBFu9s_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu16s");
    static aBFu9s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu16s(Test_aBFu9s_BFu0ll_BFu16s, "aBFu9s_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu17i");
    static aBFu9s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu17i(Test_aBFu9s_BFu0ll_BFu17i, "aBFu9s_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu17ll");
    static aBFu9s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu9s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu17ll(Test_aBFu9s_BFu0ll_BFu17ll, "aBFu9s_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu1c");
    static aBFu9s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu1c(Test_aBFu9s_BFu0ll_BFu1c, "aBFu9s_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu1i");
    static aBFu9s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu1i(Test_aBFu9s_BFu0ll_BFu1i, "aBFu9s_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu1ll");
    static aBFu9s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu1ll(Test_aBFu9s_BFu0ll_BFu1ll, "aBFu9s_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu1s");
    static aBFu9s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu1s(Test_aBFu9s_BFu0ll_BFu1s, "aBFu9s_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu31i");
    static aBFu9s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu31i(Test_aBFu9s_BFu0ll_BFu31i, "aBFu9s_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu31ll");
    static aBFu9s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu31ll(Test_aBFu9s_BFu0ll_BFu31ll, "aBFu9s_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu32i");
    static aBFu9s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu32i(Test_aBFu9s_BFu0ll_BFu32i, "aBFu9s_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu32ll");
    static aBFu9s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu32ll(Test_aBFu9s_BFu0ll_BFu32ll, "aBFu9s_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu33");
    static aBFu9s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu9s_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu9s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu33(Test_aBFu9s_BFu0ll_BFu33, "aBFu9s_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu7c");
    static aBFu9s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu7c(Test_aBFu9s_BFu0ll_BFu7c, "aBFu9s_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu7i");
    static aBFu9s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu7i(Test_aBFu9s_BFu0ll_BFu7i, "aBFu9s_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu7ll");
    static aBFu9s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu7ll(Test_aBFu9s_BFu0ll_BFu7ll, "aBFu9s_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu7s");
    static aBFu9s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu7s(Test_aBFu9s_BFu0ll_BFu7s, "aBFu9s_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu8c");
    static aBFu9s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu8c(Test_aBFu9s_BFu0ll_BFu8c, "aBFu9s_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu8i");
    static aBFu9s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu8i(Test_aBFu9s_BFu0ll_BFu8i, "aBFu9s_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu8ll");
    static aBFu9s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu8ll(Test_aBFu9s_BFu0ll_BFu8ll, "aBFu9s_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu8s");
    static aBFu9s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu8s(Test_aBFu9s_BFu0ll_BFu8s, "aBFu9s_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu9i");
    static aBFu9s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu9i(Test_aBFu9s_BFu0ll_BFu9i, "aBFu9s_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu9ll");
    static aBFu9s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu9ll(Test_aBFu9s_BFu0ll_BFu9ll, "aBFu9s_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu9s_BFu0ll_BFu9s");
    static aBFu9s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_BFu9s(Test_aBFu9s_BFu0ll_BFu9s, "aBFu9s_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_C()
{
  {
    init_simple_test("aBFu9s_BFu0ll_C");
    static aBFu9s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_C(Test_aBFu9s_BFu0ll_C, "aBFu9s_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_D()
{
  {
    init_simple_test("aBFu9s_BFu0ll_D");
    static aBFu9s_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_D(Test_aBFu9s_BFu0ll_D, "aBFu9s_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_F()
{
  {
    init_simple_test("aBFu9s_BFu0ll_F");
    static aBFu9s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_F(Test_aBFu9s_BFu0ll_F, "aBFu9s_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_I()
{
  {
    init_simple_test("aBFu9s_BFu0ll_I");
    static aBFu9s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_I(Test_aBFu9s_BFu0ll_I, "aBFu9s_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Ip");
    static aBFu9s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9s_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Ip(Test_aBFu9s_BFu0ll_Ip, "aBFu9s_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_L()
{
  {
    init_simple_test("aBFu9s_BFu0ll_L");
    static aBFu9s_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_L(Test_aBFu9s_BFu0ll_L, "aBFu9s_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_S()
{
  {
    init_simple_test("aBFu9s_BFu0ll_S");
    static aBFu9s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_S(Test_aBFu9s_BFu0ll_S, "aBFu9s_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Uc");
    static aBFu9s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu9s_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Uc(Test_aBFu9s_BFu0ll_Uc, "aBFu9s_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Ui");
    static aBFu9s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Ui(Test_aBFu9s_BFu0ll_Ui, "aBFu9s_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Ul");
    static aBFu9s_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Ul(Test_aBFu9s_BFu0ll_Ul, "aBFu9s_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Us()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Us");
    static aBFu9s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Us(Test_aBFu9s_BFu0ll_Us, "aBFu9s_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu9s_BFu0ll_Vp");
    static aBFu9s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9s_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu9s_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0ll_Vp(Test_aBFu9s_BFu0ll_Vp, "aBFu9s_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu0s");
    static aBFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s(Test_aBFu9s_BFu0s, "aBFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu0c");
    static aBFu9s_BFu0s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu0c(Test_aBFu9s_BFu0s_BFu0c, "aBFu9s_BFu0s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu0i");
    static aBFu9s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu0i(Test_aBFu9s_BFu0s_BFu0i, "aBFu9s_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu0ll");
    static aBFu9s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu0ll(Test_aBFu9s_BFu0s_BFu0ll, "aBFu9s_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu0s");
    static aBFu9s_BFu0s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu0s(Test_aBFu9s_BFu0s_BFu0s, "aBFu9s_BFu0s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu15i");
    static aBFu9s_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu15i(Test_aBFu9s_BFu0s_BFu15i, "aBFu9s_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu15ll");
    static aBFu9s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu15ll(Test_aBFu9s_BFu0s_BFu15ll, "aBFu9s_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu15s");
    static aBFu9s_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu9s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu9s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu15s(Test_aBFu9s_BFu0s_BFu15s, "aBFu9s_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu16i");
    static aBFu9s_BFu0s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu16i(Test_aBFu9s_BFu0s_BFu16i, "aBFu9s_BFu0s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu16ll");
    static aBFu9s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu16ll(Test_aBFu9s_BFu0s_BFu16ll, "aBFu9s_BFu0s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu16s");
    static aBFu9s_BFu0s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu9s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu9s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu16s(Test_aBFu9s_BFu0s_BFu16s, "aBFu9s_BFu0s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu17i");
    static aBFu9s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu17i(Test_aBFu9s_BFu0s_BFu17i, "aBFu9s_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu17ll");
    static aBFu9s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu9s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu9s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu9s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu17ll(Test_aBFu9s_BFu0s_BFu17ll, "aBFu9s_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu1c");
    static aBFu9s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu1c(Test_aBFu9s_BFu0s_BFu1c, "aBFu9s_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu1i");
    static aBFu9s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu1i(Test_aBFu9s_BFu0s_BFu1i, "aBFu9s_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu1ll");
    static aBFu9s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu1ll(Test_aBFu9s_BFu0s_BFu1ll, "aBFu9s_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu1s");
    static aBFu9s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu9s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu1s(Test_aBFu9s_BFu0s_BFu1s, "aBFu9s_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu31i");
    static aBFu9s_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu31i(Test_aBFu9s_BFu0s_BFu31i, "aBFu9s_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu31ll");
    static aBFu9s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu9s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu9s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu31ll(Test_aBFu9s_BFu0s_BFu31ll, "aBFu9s_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu32i");
    static aBFu9s_BFu0s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu32i(Test_aBFu9s_BFu0s_BFu32i, "aBFu9s_BFu0s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu32ll");
    static aBFu9s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu9s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu9s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu32ll(Test_aBFu9s_BFu0s_BFu32ll, "aBFu9s_BFu0s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu33");
    static aBFu9s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu9s_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu9s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu9s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu33(Test_aBFu9s_BFu0s_BFu33, "aBFu9s_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu7c");
    static aBFu9s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu7c(Test_aBFu9s_BFu0s_BFu7c, "aBFu9s_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu7i");
    static aBFu9s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu7i(Test_aBFu9s_BFu0s_BFu7i, "aBFu9s_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu7ll");
    static aBFu9s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu7ll(Test_aBFu9s_BFu0s_BFu7ll, "aBFu9s_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu7s");
    static aBFu9s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu9s_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu9s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu9s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu7s(Test_aBFu9s_BFu0s_BFu7s, "aBFu9s_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu8c");
    static aBFu9s_BFu0s_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu8c(Test_aBFu9s_BFu0s_BFu8c, "aBFu9s_BFu0s_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu8i");
    static aBFu9s_BFu0s_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu8i(Test_aBFu9s_BFu0s_BFu8i, "aBFu9s_BFu0s_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu8ll");
    static aBFu9s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu8ll(Test_aBFu9s_BFu0s_BFu8ll, "aBFu9s_BFu0s_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu8s");
    static aBFu9s_BFu0s_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu9s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu9s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu8s(Test_aBFu9s_BFu0s_BFu8s, "aBFu9s_BFu0s_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu9i");
    static aBFu9s_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu9i(Test_aBFu9s_BFu0s_BFu9i, "aBFu9s_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu9ll");
    static aBFu9s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu9ll(Test_aBFu9s_BFu0s_BFu9ll, "aBFu9s_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu9s_BFu0s_BFu9s");
    static aBFu9s_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu9s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_BFu9s(Test_aBFu9s_BFu0s_BFu9s, "aBFu9s_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_C()
{
  {
    init_simple_test("aBFu9s_BFu0s_C");
    static aBFu9s_BFu0s_C lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_C");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_C(Test_aBFu9s_BFu0s_C, "aBFu9s_BFu0s_C", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_D()
{
  {
    init_simple_test("aBFu9s_BFu0s_D");
    static aBFu9s_BFu0s_D lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_D");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_D(Test_aBFu9s_BFu0s_D, "aBFu9s_BFu0s_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_F()
{
  {
    init_simple_test("aBFu9s_BFu0s_F");
    static aBFu9s_BFu0s_F lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_F");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_F(Test_aBFu9s_BFu0s_F, "aBFu9s_BFu0s_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_I()
{
  {
    init_simple_test("aBFu9s_BFu0s_I");
    static aBFu9s_BFu0s_I lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_I");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_I(Test_aBFu9s_BFu0s_I, "aBFu9s_BFu0s_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Ip()
{
  {
    init_simple_test("aBFu9s_BFu0s_Ip");
    static aBFu9s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Ip");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Ip(Test_aBFu9s_BFu0s_Ip, "aBFu9s_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_L()
{
  {
    init_simple_test("aBFu9s_BFu0s_L");
    static aBFu9s_BFu0s_L lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_L");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_L(Test_aBFu9s_BFu0s_L, "aBFu9s_BFu0s_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_S()
{
  {
    init_simple_test("aBFu9s_BFu0s_S");
    static aBFu9s_BFu0s_S lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_S");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_S(Test_aBFu9s_BFu0s_S, "aBFu9s_BFu0s_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Uc()
{
  {
    init_simple_test("aBFu9s_BFu0s_Uc");
    static aBFu9s_BFu0s_Uc lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Uc");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Uc(Test_aBFu9s_BFu0s_Uc, "aBFu9s_BFu0s_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Ui()
{
  {
    init_simple_test("aBFu9s_BFu0s_Ui");
    static aBFu9s_BFu0s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Ui");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Ui(Test_aBFu9s_BFu0s_Ui, "aBFu9s_BFu0s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Ul()
{
  {
    init_simple_test("aBFu9s_BFu0s_Ul");
    static aBFu9s_BFu0s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Ul");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Ul(Test_aBFu9s_BFu0s_Ul, "aBFu9s_BFu0s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Us()
{
  {
    init_simple_test("aBFu9s_BFu0s_Us");
    static aBFu9s_BFu0s_Us lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Us");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Us(Test_aBFu9s_BFu0s_Us, "aBFu9s_BFu0s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu0s_Vp()
{
  {
    init_simple_test("aBFu9s_BFu0s_Vp");
    static aBFu9s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu0s_Vp");
    check_field_offset(lv, v2, 2, "aBFu9s_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu0s_Vp(Test_aBFu9s_BFu0s_Vp, "aBFu9s_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu15i_BFu0c");
    static aBFu9s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15i_BFu0c(Test_aBFu9s_BFu15i_BFu0c, "aBFu9s_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu15i_BFu0i");
    static aBFu9s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15i_BFu0i(Test_aBFu9s_BFu15i_BFu0i, "aBFu9s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu15i_BFu0ll");
    static aBFu9s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15i_BFu0ll(Test_aBFu9s_BFu15i_BFu0ll, "aBFu9s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu15i_BFu0s");
    static aBFu9s_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15i_BFu0s(Test_aBFu9s_BFu15i_BFu0s, "aBFu9s_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu15ll_BFu0c");
    static aBFu9s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15ll_BFu0c(Test_aBFu9s_BFu15ll_BFu0c, "aBFu9s_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu15ll_BFu0i");
    static aBFu9s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15ll_BFu0i(Test_aBFu9s_BFu15ll_BFu0i, "aBFu9s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu15ll_BFu0ll");
    static aBFu9s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15ll_BFu0ll(Test_aBFu9s_BFu15ll_BFu0ll, "aBFu9s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu15ll_BFu0s");
    static aBFu9s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15ll_BFu0s(Test_aBFu9s_BFu15ll_BFu0s, "aBFu9s_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu15s_BFu0c");
    static aBFu9s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15s_BFu0c(Test_aBFu9s_BFu15s_BFu0c, "aBFu9s_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu15s_BFu0i");
    static aBFu9s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15s_BFu0i(Test_aBFu9s_BFu15s_BFu0i, "aBFu9s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu15s_BFu0ll");
    static aBFu9s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15s_BFu0ll(Test_aBFu9s_BFu15s_BFu0ll, "aBFu9s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu15s_BFu0s");
    static aBFu9s_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "aBFu9s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "aBFu9s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu15s_BFu0s(Test_aBFu9s_BFu15s_BFu0s, "aBFu9s_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu16i_BFu0c");
    static aBFu9s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16i_BFu0c(Test_aBFu9s_BFu16i_BFu0c, "aBFu9s_BFu16i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu16i_BFu0i");
    static aBFu9s_BFu16i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16i_BFu0i(Test_aBFu9s_BFu16i_BFu0i, "aBFu9s_BFu16i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu16i_BFu0ll");
    static aBFu9s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16i_BFu0ll(Test_aBFu9s_BFu16i_BFu0ll, "aBFu9s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu16i_BFu0s");
    static aBFu9s_BFu16i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16i_BFu0s(Test_aBFu9s_BFu16i_BFu0s, "aBFu9s_BFu16i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu16ll_BFu0c");
    static aBFu9s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16ll_BFu0c(Test_aBFu9s_BFu16ll_BFu0c, "aBFu9s_BFu16ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu16ll_BFu0i");
    static aBFu9s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16ll_BFu0i(Test_aBFu9s_BFu16ll_BFu0i, "aBFu9s_BFu16ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu16ll_BFu0ll");
    static aBFu9s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16ll_BFu0ll(Test_aBFu9s_BFu16ll_BFu0ll, "aBFu9s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu16ll_BFu0s");
    static aBFu9s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16ll_BFu0s(Test_aBFu9s_BFu16ll_BFu0s, "aBFu9s_BFu16ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu16s_BFu0c");
    static aBFu9s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16s_BFu0c(Test_aBFu9s_BFu16s_BFu0c, "aBFu9s_BFu16s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu16s_BFu0i");
    static aBFu9s_BFu16s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16s_BFu0i(Test_aBFu9s_BFu16s_BFu0i, "aBFu9s_BFu16s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu16s_BFu0ll");
    static aBFu9s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16s_BFu0ll(Test_aBFu9s_BFu16s_BFu0ll, "aBFu9s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu16s_BFu0s");
    static aBFu9s_BFu16s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "aBFu9s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "aBFu9s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu16s_BFu0s(Test_aBFu9s_BFu16s_BFu0s, "aBFu9s_BFu16s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu17i_BFu0c");
    static aBFu9s_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17i_BFu0c(Test_aBFu9s_BFu17i_BFu0c, "aBFu9s_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu17i_BFu0i");
    static aBFu9s_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17i_BFu0i(Test_aBFu9s_BFu17i_BFu0i, "aBFu9s_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu17i_BFu0ll");
    static aBFu9s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17i_BFu0ll(Test_aBFu9s_BFu17i_BFu0ll, "aBFu9s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu17i_BFu0s");
    static aBFu9s_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17i_BFu0s(Test_aBFu9s_BFu17i_BFu0s, "aBFu9s_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu17ll_BFu0c");
    static aBFu9s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17ll_BFu0c(Test_aBFu9s_BFu17ll_BFu0c, "aBFu9s_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu17ll_BFu0i");
    static aBFu9s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17ll_BFu0i(Test_aBFu9s_BFu17ll_BFu0i, "aBFu9s_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu17ll_BFu0ll");
    static aBFu9s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17ll_BFu0ll(Test_aBFu9s_BFu17ll_BFu0ll, "aBFu9s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu17ll_BFu0s");
    static aBFu9s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "aBFu9s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "aBFu9s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu17ll_BFu0s(Test_aBFu9s_BFu17ll_BFu0s, "aBFu9s_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu1c_BFu0c");
    static aBFu9s_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1c_BFu0c(Test_aBFu9s_BFu1c_BFu0c, "aBFu9s_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu1c_BFu0i");
    static aBFu9s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1c_BFu0i(Test_aBFu9s_BFu1c_BFu0i, "aBFu9s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu1c_BFu0ll");
    static aBFu9s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1c_BFu0ll(Test_aBFu9s_BFu1c_BFu0ll, "aBFu9s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu1c_BFu0s");
    static aBFu9s_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1c_BFu0s(Test_aBFu9s_BFu1c_BFu0s, "aBFu9s_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu1i_BFu0c");
    static aBFu9s_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1i_BFu0c(Test_aBFu9s_BFu1i_BFu0c, "aBFu9s_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu1i_BFu0i");
    static aBFu9s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1i_BFu0i(Test_aBFu9s_BFu1i_BFu0i, "aBFu9s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu1i_BFu0ll");
    static aBFu9s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1i_BFu0ll(Test_aBFu9s_BFu1i_BFu0ll, "aBFu9s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu1i_BFu0s");
    static aBFu9s_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1i_BFu0s(Test_aBFu9s_BFu1i_BFu0s, "aBFu9s_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu1ll_BFu0c");
    static aBFu9s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1ll_BFu0c(Test_aBFu9s_BFu1ll_BFu0c, "aBFu9s_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu1ll_BFu0i");
    static aBFu9s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1ll_BFu0i(Test_aBFu9s_BFu1ll_BFu0i, "aBFu9s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu1ll_BFu0ll");
    static aBFu9s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1ll_BFu0ll(Test_aBFu9s_BFu1ll_BFu0ll, "aBFu9s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu1ll_BFu0s");
    static aBFu9s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1ll_BFu0s(Test_aBFu9s_BFu1ll_BFu0s, "aBFu9s_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu1s_BFu0c");
    static aBFu9s_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1s_BFu0c(Test_aBFu9s_BFu1s_BFu0c, "aBFu9s_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu1s_BFu0i");
    static aBFu9s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1s_BFu0i(Test_aBFu9s_BFu1s_BFu0i, "aBFu9s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu1s_BFu0ll");
    static aBFu9s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1s_BFu0ll(Test_aBFu9s_BFu1s_BFu0ll, "aBFu9s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu1s_BFu0s");
    static aBFu9s_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "aBFu9s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu1s_BFu0s(Test_aBFu9s_BFu1s_BFu0s, "aBFu9s_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu31i_BFu0c");
    static aBFu9s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9s_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31i_BFu0c(Test_aBFu9s_BFu31i_BFu0c, "aBFu9s_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu31i_BFu0i");
    static aBFu9s_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31i_BFu0i(Test_aBFu9s_BFu31i_BFu0i, "aBFu9s_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu31i_BFu0ll");
    static aBFu9s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31i_BFu0ll(Test_aBFu9s_BFu31i_BFu0ll, "aBFu9s_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu31i_BFu0s");
    static aBFu9s_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31i_BFu0s(Test_aBFu9s_BFu31i_BFu0s, "aBFu9s_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu31ll_BFu0c");
    static aBFu9s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu9s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31ll_BFu0c(Test_aBFu9s_BFu31ll_BFu0c, "aBFu9s_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu31ll_BFu0i");
    static aBFu9s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31ll_BFu0i(Test_aBFu9s_BFu31ll_BFu0i, "aBFu9s_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu31ll_BFu0ll");
    static aBFu9s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31ll_BFu0ll(Test_aBFu9s_BFu31ll_BFu0ll, "aBFu9s_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu31ll_BFu0s");
    static aBFu9s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu9s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "aBFu9s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "aBFu9s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu31ll_BFu0s(Test_aBFu9s_BFu31ll_BFu0s, "aBFu9s_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu32i_BFu0c");
    static aBFu9s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32i_BFu0c(Test_aBFu9s_BFu32i_BFu0c, "aBFu9s_BFu32i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu32i_BFu0i");
    static aBFu9s_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32i_BFu0i(Test_aBFu9s_BFu32i_BFu0i, "aBFu9s_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu32i_BFu0ll");
    static aBFu9s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32i_BFu0ll(Test_aBFu9s_BFu32i_BFu0ll, "aBFu9s_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu32i_BFu0s");
    static aBFu9s_BFu32i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32i_BFu0s(Test_aBFu9s_BFu32i_BFu0s, "aBFu9s_BFu32i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu32ll_BFu0c");
    static aBFu9s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32ll_BFu0c(Test_aBFu9s_BFu32ll_BFu0c, "aBFu9s_BFu32ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu32ll_BFu0i");
    static aBFu9s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32ll_BFu0i(Test_aBFu9s_BFu32ll_BFu0i, "aBFu9s_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu32ll_BFu0ll");
    static aBFu9s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32ll_BFu0ll(Test_aBFu9s_BFu32ll_BFu0ll, "aBFu9s_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu32ll_BFu0s");
    static aBFu9s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "aBFu9s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "aBFu9s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu32ll_BFu0s(Test_aBFu9s_BFu32ll_BFu0s, "aBFu9s_BFu32ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu33_BFu0c");
    static aBFu9s_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu33_BFu0c(Test_aBFu9s_BFu33_BFu0c, "aBFu9s_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu33_BFu0i");
    static aBFu9s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu33_BFu0i(Test_aBFu9s_BFu33_BFu0i, "aBFu9s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu33_BFu0ll");
    static aBFu9s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu33_BFu0ll(Test_aBFu9s_BFu33_BFu0ll, "aBFu9s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu33_BFu0s");
    static aBFu9s_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "aBFu9s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "aBFu9s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu33_BFu0s(Test_aBFu9s_BFu33_BFu0s, "aBFu9s_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu7c_BFu0c");
    static aBFu9s_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7c_BFu0c(Test_aBFu9s_BFu7c_BFu0c, "aBFu9s_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu7c_BFu0i");
    static aBFu9s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7c_BFu0i(Test_aBFu9s_BFu7c_BFu0i, "aBFu9s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu7c_BFu0ll");
    static aBFu9s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7c_BFu0ll(Test_aBFu9s_BFu7c_BFu0ll, "aBFu9s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu7c_BFu0s");
    static aBFu9s_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7c_BFu0s(Test_aBFu9s_BFu7c_BFu0s, "aBFu9s_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu7i_BFu0c");
    static aBFu9s_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7i_BFu0c(Test_aBFu9s_BFu7i_BFu0c, "aBFu9s_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu7i_BFu0i");
    static aBFu9s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7i_BFu0i(Test_aBFu9s_BFu7i_BFu0i, "aBFu9s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu7i_BFu0ll");
    static aBFu9s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7i_BFu0ll(Test_aBFu9s_BFu7i_BFu0ll, "aBFu9s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu7i_BFu0s");
    static aBFu9s_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7i_BFu0s(Test_aBFu9s_BFu7i_BFu0s, "aBFu9s_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu7ll_BFu0c");
    static aBFu9s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7ll_BFu0c(Test_aBFu9s_BFu7ll_BFu0c, "aBFu9s_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu7ll_BFu0i");
    static aBFu9s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7ll_BFu0i(Test_aBFu9s_BFu7ll_BFu0i, "aBFu9s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu7ll_BFu0ll");
    static aBFu9s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7ll_BFu0ll(Test_aBFu9s_BFu7ll_BFu0ll, "aBFu9s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu7ll_BFu0s");
    static aBFu9s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7ll_BFu0s(Test_aBFu9s_BFu7ll_BFu0s, "aBFu9s_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu7s_BFu0c");
    static aBFu9s_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7s_BFu0c(Test_aBFu9s_BFu7s_BFu0c, "aBFu9s_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu7s_BFu0i");
    static aBFu9s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7s_BFu0i(Test_aBFu9s_BFu7s_BFu0i, "aBFu9s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu7s_BFu0ll");
    static aBFu9s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7s_BFu0ll(Test_aBFu9s_BFu7s_BFu0ll, "aBFu9s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu7s_BFu0s");
    static aBFu9s_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu9s_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "aBFu9s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "aBFu9s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu7s_BFu0s(Test_aBFu9s_BFu7s_BFu0s, "aBFu9s_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu8c_BFu0c");
    static aBFu9s_BFu8c_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8c_BFu0c(Test_aBFu9s_BFu8c_BFu0c, "aBFu9s_BFu8c_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu8c_BFu0i");
    static aBFu9s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8c_BFu0i(Test_aBFu9s_BFu8c_BFu0i, "aBFu9s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu8c_BFu0ll");
    static aBFu9s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8c_BFu0ll(Test_aBFu9s_BFu8c_BFu0ll, "aBFu9s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu8c_BFu0s");
    static aBFu9s_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8c_BFu0s(Test_aBFu9s_BFu8c_BFu0s, "aBFu9s_BFu8c_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu8i_BFu0c");
    static aBFu9s_BFu8i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8i_BFu0c(Test_aBFu9s_BFu8i_BFu0c, "aBFu9s_BFu8i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu8i_BFu0i");
    static aBFu9s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8i_BFu0i(Test_aBFu9s_BFu8i_BFu0i, "aBFu9s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu8i_BFu0ll");
    static aBFu9s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8i_BFu0ll(Test_aBFu9s_BFu8i_BFu0ll, "aBFu9s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu8i_BFu0s");
    static aBFu9s_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8i_BFu0s(Test_aBFu9s_BFu8i_BFu0s, "aBFu9s_BFu8i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu8ll_BFu0c");
    static aBFu9s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8ll_BFu0c(Test_aBFu9s_BFu8ll_BFu0c, "aBFu9s_BFu8ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu8ll_BFu0i");
    static aBFu9s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8ll_BFu0i(Test_aBFu9s_BFu8ll_BFu0i, "aBFu9s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu8ll_BFu0ll");
    static aBFu9s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8ll_BFu0ll(Test_aBFu9s_BFu8ll_BFu0ll, "aBFu9s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu8ll_BFu0s");
    static aBFu9s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8ll_BFu0s(Test_aBFu9s_BFu8ll_BFu0s, "aBFu9s_BFu8ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu8s_BFu0c");
    static aBFu9s_BFu8s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8s_BFu0c(Test_aBFu9s_BFu8s_BFu0c, "aBFu9s_BFu8s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu8s_BFu0i");
    static aBFu9s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8s_BFu0i(Test_aBFu9s_BFu8s_BFu0i, "aBFu9s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu8s_BFu0ll");
    static aBFu9s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8s_BFu0ll(Test_aBFu9s_BFu8s_BFu0ll, "aBFu9s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu8s_BFu0s");
    static aBFu9s_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "aBFu9s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "aBFu9s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu8s_BFu0s(Test_aBFu9s_BFu8s_BFu0s, "aBFu9s_BFu8s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu9i_BFu0c");
    static aBFu9s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9i_BFu0c(Test_aBFu9s_BFu9i_BFu0c, "aBFu9s_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu9i_BFu0i");
    static aBFu9s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9i_BFu0i(Test_aBFu9s_BFu9i_BFu0i, "aBFu9s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu9i_BFu0ll");
    static aBFu9s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9i_BFu0ll(Test_aBFu9s_BFu9i_BFu0ll, "aBFu9s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu9i_BFu0s");
    static aBFu9s_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9i_BFu0s(Test_aBFu9s_BFu9i_BFu0s, "aBFu9s_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu9ll_BFu0c");
    static aBFu9s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9ll_BFu0c(Test_aBFu9s_BFu9ll_BFu0c, "aBFu9s_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu9ll_BFu0i");
    static aBFu9s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9ll_BFu0i(Test_aBFu9s_BFu9ll_BFu0i, "aBFu9s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu9ll_BFu0ll");
    static aBFu9s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9ll_BFu0ll(Test_aBFu9s_BFu9ll_BFu0ll, "aBFu9s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu9ll_BFu0s");
    static aBFu9s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9ll_BFu0s(Test_aBFu9s_BFu9ll_BFu0s, "aBFu9s_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu9s_BFu9s_BFu0c");
    static aBFu9s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9s_BFu0c(Test_aBFu9s_BFu9s_BFu0c, "aBFu9s_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu9s_BFu9s_BFu0i");
    static aBFu9s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9s_BFu0i(Test_aBFu9s_BFu9s_BFu0i, "aBFu9s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu9s_BFu9s_BFu0ll");
    static aBFu9s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9s_BFu0ll(Test_aBFu9s_BFu9s_BFu0ll, "aBFu9s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu9s_BFu9s_BFu0s");
    static aBFu9s_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "aBFu9s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "aBFu9s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu9s_BFu9s_BFu0s(Test_aBFu9s_BFu9s_BFu0s, "aBFu9s_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_C_BFu0c()
{
  {
    init_simple_test("aBFu9s_C_BFu0c");
    static aBFu9s_C_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_C_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_C_BFu0c(Test_aBFu9s_C_BFu0c, "aBFu9s_C_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_C_BFu0i()
{
  {
    init_simple_test("aBFu9s_C_BFu0i");
    static aBFu9s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_C_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_C_BFu0i(Test_aBFu9s_C_BFu0i, "aBFu9s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_C_BFu0ll()
{
  {
    init_simple_test("aBFu9s_C_BFu0ll");
    static aBFu9s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_C_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_C_BFu0ll(Test_aBFu9s_C_BFu0ll, "aBFu9s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_C_BFu0s()
{
  {
    init_simple_test("aBFu9s_C_BFu0s");
    static aBFu9s_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_C_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_C_BFu0s(Test_aBFu9s_C_BFu0s, "aBFu9s_C_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_D_BFu0c()
{
  {
    init_simple_test("aBFu9s_D_BFu0c");
    static aBFu9s_D_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_D_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_D_BFu0c(Test_aBFu9s_D_BFu0c, "aBFu9s_D_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_D_BFu0i()
{
  {
    init_simple_test("aBFu9s_D_BFu0i");
    static aBFu9s_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_D_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_D_BFu0i(Test_aBFu9s_D_BFu0i, "aBFu9s_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_D_BFu0ll()
{
  {
    init_simple_test("aBFu9s_D_BFu0ll");
    static aBFu9s_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_D_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_D_BFu0ll(Test_aBFu9s_D_BFu0ll, "aBFu9s_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_D_BFu0s()
{
  {
    init_simple_test("aBFu9s_D_BFu0s");
    static aBFu9s_D_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_D_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_D_BFu0s(Test_aBFu9s_D_BFu0s, "aBFu9s_D_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_F_BFu0c()
{
  {
    init_simple_test("aBFu9s_F_BFu0c");
    static aBFu9s_F_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_F_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_F_BFu0c(Test_aBFu9s_F_BFu0c, "aBFu9s_F_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_F_BFu0i()
{
  {
    init_simple_test("aBFu9s_F_BFu0i");
    static aBFu9s_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_F_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_F_BFu0i(Test_aBFu9s_F_BFu0i, "aBFu9s_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_F_BFu0ll()
{
  {
    init_simple_test("aBFu9s_F_BFu0ll");
    static aBFu9s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_F_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_F_BFu0ll(Test_aBFu9s_F_BFu0ll, "aBFu9s_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_F_BFu0s()
{
  {
    init_simple_test("aBFu9s_F_BFu0s");
    static aBFu9s_F_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_F_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_F_BFu0s(Test_aBFu9s_F_BFu0s, "aBFu9s_F_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_I_BFu0c()
{
  {
    init_simple_test("aBFu9s_I_BFu0c");
    static aBFu9s_I_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_I_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_I_BFu0c(Test_aBFu9s_I_BFu0c, "aBFu9s_I_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_I_BFu0i()
{
  {
    init_simple_test("aBFu9s_I_BFu0i");
    static aBFu9s_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_I_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_I_BFu0i(Test_aBFu9s_I_BFu0i, "aBFu9s_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_I_BFu0ll()
{
  {
    init_simple_test("aBFu9s_I_BFu0ll");
    static aBFu9s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_I_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_I_BFu0ll(Test_aBFu9s_I_BFu0ll, "aBFu9s_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_I_BFu0s()
{
  {
    init_simple_test("aBFu9s_I_BFu0s");
    static aBFu9s_I_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_I_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_I_BFu0s(Test_aBFu9s_I_BFu0s, "aBFu9s_I_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ip_BFu0c()
{
  {
    init_simple_test("aBFu9s_Ip_BFu0c");
    static aBFu9s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ip_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ip_BFu0c(Test_aBFu9s_Ip_BFu0c, "aBFu9s_Ip_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ip_BFu0i()
{
  {
    init_simple_test("aBFu9s_Ip_BFu0i");
    static aBFu9s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ip_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ip_BFu0i(Test_aBFu9s_Ip_BFu0i, "aBFu9s_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Ip_BFu0ll");
    static aBFu9s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9s_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ip_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ip_BFu0ll(Test_aBFu9s_Ip_BFu0ll, "aBFu9s_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ip_BFu0s()
{
  {
    init_simple_test("aBFu9s_Ip_BFu0s");
    static aBFu9s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ip_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ip_BFu0s(Test_aBFu9s_Ip_BFu0s, "aBFu9s_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_L_BFu0c()
{
  {
    init_simple_test("aBFu9s_L_BFu0c");
    static aBFu9s_L_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_L_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_L_BFu0c(Test_aBFu9s_L_BFu0c, "aBFu9s_L_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_L_BFu0i()
{
  {
    init_simple_test("aBFu9s_L_BFu0i");
    static aBFu9s_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_L_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_L_BFu0i(Test_aBFu9s_L_BFu0i, "aBFu9s_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_L_BFu0ll()
{
  {
    init_simple_test("aBFu9s_L_BFu0ll");
    static aBFu9s_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_L_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_L_BFu0ll(Test_aBFu9s_L_BFu0ll, "aBFu9s_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_L_BFu0s()
{
  {
    init_simple_test("aBFu9s_L_BFu0s");
    static aBFu9s_L_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_L_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_L_BFu0s(Test_aBFu9s_L_BFu0s, "aBFu9s_L_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_S_BFu0c()
{
  {
    init_simple_test("aBFu9s_S_BFu0c");
    static aBFu9s_S_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_S_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_S_BFu0c(Test_aBFu9s_S_BFu0c, "aBFu9s_S_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_S_BFu0i()
{
  {
    init_simple_test("aBFu9s_S_BFu0i");
    static aBFu9s_S_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_S_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_S_BFu0i(Test_aBFu9s_S_BFu0i, "aBFu9s_S_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_S_BFu0ll()
{
  {
    init_simple_test("aBFu9s_S_BFu0ll");
    static aBFu9s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_S_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_S_BFu0ll(Test_aBFu9s_S_BFu0ll, "aBFu9s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_S_BFu0s()
{
  {
    init_simple_test("aBFu9s_S_BFu0s");
    static aBFu9s_S_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_S_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_S_BFu0s(Test_aBFu9s_S_BFu0s, "aBFu9s_S_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Uc_BFu0c()
{
  {
    init_simple_test("aBFu9s_Uc_BFu0c");
    static aBFu9s_Uc_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu9s_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Uc_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Uc_BFu0c(Test_aBFu9s_Uc_BFu0c, "aBFu9s_Uc_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Uc_BFu0i()
{
  {
    init_simple_test("aBFu9s_Uc_BFu0i");
    static aBFu9s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Uc_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Uc_BFu0i(Test_aBFu9s_Uc_BFu0i, "aBFu9s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Uc_BFu0ll");
    static aBFu9s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Uc_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Uc_BFu0ll(Test_aBFu9s_Uc_BFu0ll, "aBFu9s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Uc_BFu0s()
{
  {
    init_simple_test("aBFu9s_Uc_BFu0s");
    static aBFu9s_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu9s_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Uc_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Uc_BFu0s(Test_aBFu9s_Uc_BFu0s, "aBFu9s_Uc_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ui_BFu0c()
{
  {
    init_simple_test("aBFu9s_Ui_BFu0c");
    static aBFu9s_Ui_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ui_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ui_BFu0c(Test_aBFu9s_Ui_BFu0c, "aBFu9s_Ui_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ui_BFu0i()
{
  {
    init_simple_test("aBFu9s_Ui_BFu0i");
    static aBFu9s_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ui_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ui_BFu0i(Test_aBFu9s_Ui_BFu0i, "aBFu9s_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Ui_BFu0ll");
    static aBFu9s_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu9s_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ui_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ui_BFu0ll(Test_aBFu9s_Ui_BFu0ll, "aBFu9s_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ui_BFu0s()
{
  {
    init_simple_test("aBFu9s_Ui_BFu0s");
    static aBFu9s_Ui_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu9s_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ui_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ui_BFu0s(Test_aBFu9s_Ui_BFu0s, "aBFu9s_Ui_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ul_BFu0c()
{
  {
    init_simple_test("aBFu9s_Ul_BFu0c");
    static aBFu9s_Ul_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ul_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ul_BFu0c(Test_aBFu9s_Ul_BFu0c, "aBFu9s_Ul_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ul_BFu0i()
{
  {
    init_simple_test("aBFu9s_Ul_BFu0i");
    static aBFu9s_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu9s_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ul_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ul_BFu0i(Test_aBFu9s_Ul_BFu0i, "aBFu9s_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Ul_BFu0ll");
    static aBFu9s_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu9s_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ul_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ul_BFu0ll(Test_aBFu9s_Ul_BFu0ll, "aBFu9s_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Ul_BFu0s()
{
  {
    init_simple_test("aBFu9s_Ul_BFu0s");
    static aBFu9s_Ul_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aBFu9s_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Ul_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Ul_BFu0s(Test_aBFu9s_Ul_BFu0s, "aBFu9s_Ul_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Us_BFu0c()
{
  {
    init_simple_test("aBFu9s_Us_BFu0c");
    static aBFu9s_Us_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Us_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Us_BFu0c(Test_aBFu9s_Us_BFu0c, "aBFu9s_Us_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Us_BFu0i()
{
  {
    init_simple_test("aBFu9s_Us_BFu0i");
    static aBFu9s_Us_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Us_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Us_BFu0i(Test_aBFu9s_Us_BFu0i, "aBFu9s_Us_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Us_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Us_BFu0ll");
    static aBFu9s_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu9s_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Us_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Us_BFu0ll(Test_aBFu9s_Us_BFu0ll, "aBFu9s_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Us_BFu0s()
{
  {
    init_simple_test("aBFu9s_Us_BFu0s");
    static aBFu9s_Us_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu9s_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Us_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Us_BFu0s(Test_aBFu9s_Us_BFu0s, "aBFu9s_Us_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Vp_BFu0c()
{
  {
    init_simple_test("aBFu9s_Vp_BFu0c");
    static aBFu9s_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Vp_BFu0c");
    check_field_offset(lv, v2, 2, "aBFu9s_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Vp_BFu0c(Test_aBFu9s_Vp_BFu0c, "aBFu9s_Vp_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Vp_BFu0i()
{
  {
    init_simple_test("aBFu9s_Vp_BFu0i");
    static aBFu9s_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu9s_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Vp_BFu0i");
    check_field_offset(lv, v2, 2, "aBFu9s_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Vp_BFu0i(Test_aBFu9s_Vp_BFu0i, "aBFu9s_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu9s_Vp_BFu0ll");
    static aBFu9s_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu9s_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Vp_BFu0ll");
    check_field_offset(lv, v2, 2, "aBFu9s_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Vp_BFu0ll(Test_aBFu9s_Vp_BFu0ll, "aBFu9s_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu9s_Vp_BFu0s()
{
  {
    init_simple_test("aBFu9s_Vp_BFu0s");
    static aBFu9s_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu9s_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu9s_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "aBFu9s_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "aBFu9s_Vp_BFu0s");
    check_field_offset(lv, v2, 2, "aBFu9s_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu9s_Vp_BFu0s(Test_aBFu9s_Vp_BFu0s, "aBFu9s_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c()
{
  {
    init_simple_test("aC_BFu0c");
    static aC_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aC_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0c(Test_aC_BFu0c, "aC_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu0c()
{
  {
    init_simple_test("aC_BFu0c_BFu0c");
    static aC_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aC_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu0c(Test_aC_BFu0c_BFu0c, "aC_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu0i()
{
  {
    init_simple_test("aC_BFu0c_BFu0i");
    static aC_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu0i(Test_aC_BFu0c_BFu0i, "aC_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu0ll()
{
  {
    init_simple_test("aC_BFu0c_BFu0ll");
    static aC_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu0ll(Test_aC_BFu0c_BFu0ll, "aC_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu0s()
{
  {
    init_simple_test("aC_BFu0c_BFu0s");
    static aC_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aC_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu0s(Test_aC_BFu0c_BFu0s, "aC_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu15i()
{
  {
    init_simple_test("aC_BFu0c_BFu15i");
    static aC_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu15i(Test_aC_BFu0c_BFu15i, "aC_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu15ll()
{
  {
    init_simple_test("aC_BFu0c_BFu15ll");
    static aC_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu15ll(Test_aC_BFu0c_BFu15ll, "aC_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu15s()
{
  {
    init_simple_test("aC_BFu0c_BFu15s");
    static aC_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu15s(Test_aC_BFu0c_BFu15s, "aC_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu16i()
{
  {
    init_simple_test("aC_BFu0c_BFu16i");
    static aC_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu16i(Test_aC_BFu0c_BFu16i, "aC_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu16ll()
{
  {
    init_simple_test("aC_BFu0c_BFu16ll");
    static aC_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu16ll(Test_aC_BFu0c_BFu16ll, "aC_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu16s()
{
  {
    init_simple_test("aC_BFu0c_BFu16s");
    static aC_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu16s(Test_aC_BFu0c_BFu16s, "aC_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu17i()
{
  {
    init_simple_test("aC_BFu0c_BFu17i");
    static aC_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu17i(Test_aC_BFu0c_BFu17i, "aC_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu17ll()
{
  {
    init_simple_test("aC_BFu0c_BFu17ll");
    static aC_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu17ll(Test_aC_BFu0c_BFu17ll, "aC_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu1c()
{
  {
    init_simple_test("aC_BFu0c_BFu1c");
    static aC_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu1c(Test_aC_BFu0c_BFu1c, "aC_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu1i()
{
  {
    init_simple_test("aC_BFu0c_BFu1i");
    static aC_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu1i(Test_aC_BFu0c_BFu1i, "aC_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu1ll()
{
  {
    init_simple_test("aC_BFu0c_BFu1ll");
    static aC_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu1ll(Test_aC_BFu0c_BFu1ll, "aC_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu1s()
{
  {
    init_simple_test("aC_BFu0c_BFu1s");
    static aC_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu1s(Test_aC_BFu0c_BFu1s, "aC_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu31i()
{
  {
    init_simple_test("aC_BFu0c_BFu31i");
    static aC_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu31i(Test_aC_BFu0c_BFu31i, "aC_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu31ll()
{
  {
    init_simple_test("aC_BFu0c_BFu31ll");
    static aC_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu31ll(Test_aC_BFu0c_BFu31ll, "aC_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu32i()
{
  {
    init_simple_test("aC_BFu0c_BFu32i");
    static aC_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu32i(Test_aC_BFu0c_BFu32i, "aC_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu32ll()
{
  {
    init_simple_test("aC_BFu0c_BFu32ll");
    static aC_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu32ll(Test_aC_BFu0c_BFu32ll, "aC_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu33()
{
  {
    init_simple_test("aC_BFu0c_BFu33");
    static aC_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aC_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aC_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aC_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu33(Test_aC_BFu0c_BFu33, "aC_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu7c()
{
  {
    init_simple_test("aC_BFu0c_BFu7c");
    static aC_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu7c(Test_aC_BFu0c_BFu7c, "aC_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu7i()
{
  {
    init_simple_test("aC_BFu0c_BFu7i");
    static aC_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu7i(Test_aC_BFu0c_BFu7i, "aC_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu7ll()
{
  {
    init_simple_test("aC_BFu0c_BFu7ll");
    static aC_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu7ll(Test_aC_BFu0c_BFu7ll, "aC_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu7s()
{
  {
    init_simple_test("aC_BFu0c_BFu7s");
    static aC_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu7s(Test_aC_BFu0c_BFu7s, "aC_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu8c()
{
  {
    init_simple_test("aC_BFu0c_BFu8c");
    static aC_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu8c(Test_aC_BFu0c_BFu8c, "aC_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu8i()
{
  {
    init_simple_test("aC_BFu0c_BFu8i");
    static aC_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu8i(Test_aC_BFu0c_BFu8i, "aC_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu8ll()
{
  {
    init_simple_test("aC_BFu0c_BFu8ll");
    static aC_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu8ll(Test_aC_BFu0c_BFu8ll, "aC_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu8s()
{
  {
    init_simple_test("aC_BFu0c_BFu8s");
    static aC_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu8s(Test_aC_BFu0c_BFu8s, "aC_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu9i()
{
  {
    init_simple_test("aC_BFu0c_BFu9i");
    static aC_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu9i(Test_aC_BFu0c_BFu9i, "aC_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu9ll()
{
  {
    init_simple_test("aC_BFu0c_BFu9ll");
    static aC_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu9ll(Test_aC_BFu0c_BFu9ll, "aC_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_BFu9s()
{
  {
    init_simple_test("aC_BFu0c_BFu9s");
    static aC_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_BFu9s(Test_aC_BFu0c_BFu9s, "aC_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_C()
{
  {
    init_simple_test("aC_BFu0c_C");
    static aC_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_C.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_C(Test_aC_BFu0c_C, "aC_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_D()
{
  {
    init_simple_test("aC_BFu0c_D");
    static aC_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aC_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_D.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_D(Test_aC_BFu0c_D, "aC_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_F()
{
  {
    init_simple_test("aC_BFu0c_F");
    static aC_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_F.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_F(Test_aC_BFu0c_F, "aC_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_I()
{
  {
    init_simple_test("aC_BFu0c_I");
    static aC_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_I.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_I(Test_aC_BFu0c_I, "aC_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Ip()
{
  {
    init_simple_test("aC_BFu0c_Ip");
    static aC_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Ip.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Ip(Test_aC_BFu0c_Ip, "aC_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_L()
{
  {
    init_simple_test("aC_BFu0c_L");
    static aC_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aC_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_L.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_L(Test_aC_BFu0c_L, "aC_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_S()
{
  {
    init_simple_test("aC_BFu0c_S");
    static aC_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_S.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_S(Test_aC_BFu0c_S, "aC_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Uc()
{
  {
    init_simple_test("aC_BFu0c_Uc");
    static aC_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Uc.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Uc(Test_aC_BFu0c_Uc, "aC_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Ui()
{
  {
    init_simple_test("aC_BFu0c_Ui");
    static aC_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Ui.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Ui(Test_aC_BFu0c_Ui, "aC_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Ul()
{
  {
    init_simple_test("aC_BFu0c_Ul");
    static aC_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aC_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Ul.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Ul(Test_aC_BFu0c_Ul, "aC_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Us()
{
  {
    init_simple_test("aC_BFu0c_Us");
    static aC_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Us.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Us(Test_aC_BFu0c_Us, "aC_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0c_Vp()
{
  {
    init_simple_test("aC_BFu0c_Vp");
    static aC_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aC_BFu0c_Vp.v1");
    check_field_offset(lv, v2, 1, "aC_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0c_Vp(Test_aC_BFu0c_Vp, "aC_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i()
{
  {
    init_simple_test("aC_BFu0i");
    static aC_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0i(Test_aC_BFu0i, "aC_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu0c()
{
  {
    init_simple_test("aC_BFu0i_BFu0c");
    static aC_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu0c(Test_aC_BFu0i_BFu0c, "aC_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu0i()
{
  {
    init_simple_test("aC_BFu0i_BFu0i");
    static aC_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu0i(Test_aC_BFu0i_BFu0i, "aC_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu0ll()
{
  {
    init_simple_test("aC_BFu0i_BFu0ll");
    static aC_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu0ll(Test_aC_BFu0i_BFu0ll, "aC_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu0s()
{
  {
    init_simple_test("aC_BFu0i_BFu0s");
    static aC_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu0s(Test_aC_BFu0i_BFu0s, "aC_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu15i()
{
  {
    init_simple_test("aC_BFu0i_BFu15i");
    static aC_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aC_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu15i(Test_aC_BFu0i_BFu15i, "aC_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu15ll()
{
  {
    init_simple_test("aC_BFu0i_BFu15ll");
    static aC_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aC_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu15ll(Test_aC_BFu0i_BFu15ll, "aC_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu15s()
{
  {
    init_simple_test("aC_BFu0i_BFu15s");
    static aC_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aC_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu15s(Test_aC_BFu0i_BFu15s, "aC_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu16i()
{
  {
    init_simple_test("aC_BFu0i_BFu16i");
    static aC_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aC_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu16i(Test_aC_BFu0i_BFu16i, "aC_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu16ll()
{
  {
    init_simple_test("aC_BFu0i_BFu16ll");
    static aC_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aC_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu16ll(Test_aC_BFu0i_BFu16ll, "aC_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu16s()
{
  {
    init_simple_test("aC_BFu0i_BFu16s");
    static aC_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aC_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu16s(Test_aC_BFu0i_BFu16s, "aC_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu17i()
{
  {
    init_simple_test("aC_BFu0i_BFu17i");
    static aC_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aC_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aC_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aC_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu17i(Test_aC_BFu0i_BFu17i, "aC_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu17ll()
{
  {
    init_simple_test("aC_BFu0i_BFu17ll");
    static aC_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aC_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aC_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aC_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu17ll(Test_aC_BFu0i_BFu17ll, "aC_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu1c()
{
  {
    init_simple_test("aC_BFu0i_BFu1c");
    static aC_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aC_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu1c(Test_aC_BFu0i_BFu1c, "aC_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu1i()
{
  {
    init_simple_test("aC_BFu0i_BFu1i");
    static aC_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aC_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu1i(Test_aC_BFu0i_BFu1i, "aC_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu1ll()
{
  {
    init_simple_test("aC_BFu0i_BFu1ll");
    static aC_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aC_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu1ll(Test_aC_BFu0i_BFu1ll, "aC_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu1s()
{
  {
    init_simple_test("aC_BFu0i_BFu1s");
    static aC_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aC_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu1s(Test_aC_BFu0i_BFu1s, "aC_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu31i()
{
  {
    init_simple_test("aC_BFu0i_BFu31i");
    static aC_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aC_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aC_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu31i(Test_aC_BFu0i_BFu31i, "aC_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu31ll()
{
  {
    init_simple_test("aC_BFu0i_BFu31ll");
    static aC_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aC_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aC_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu31ll(Test_aC_BFu0i_BFu31ll, "aC_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu32i()
{
  {
    init_simple_test("aC_BFu0i_BFu32i");
    static aC_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aC_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aC_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu32i(Test_aC_BFu0i_BFu32i, "aC_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu32ll()
{
  {
    init_simple_test("aC_BFu0i_BFu32ll");
    static aC_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aC_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aC_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu32ll(Test_aC_BFu0i_BFu32ll, "aC_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu33()
{
  {
    init_simple_test("aC_BFu0i_BFu33");
    static aC_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aC_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aC_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aC_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu33(Test_aC_BFu0i_BFu33, "aC_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu7c()
{
  {
    init_simple_test("aC_BFu0i_BFu7c");
    static aC_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aC_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu7c(Test_aC_BFu0i_BFu7c, "aC_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu7i()
{
  {
    init_simple_test("aC_BFu0i_BFu7i");
    static aC_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aC_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu7i(Test_aC_BFu0i_BFu7i, "aC_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu7ll()
{
  {
    init_simple_test("aC_BFu0i_BFu7ll");
    static aC_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aC_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu7ll(Test_aC_BFu0i_BFu7ll, "aC_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu7s()
{
  {
    init_simple_test("aC_BFu0i_BFu7s");
    static aC_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aC_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu7s(Test_aC_BFu0i_BFu7s, "aC_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu8c()
{
  {
    init_simple_test("aC_BFu0i_BFu8c");
    static aC_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aC_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu8c(Test_aC_BFu0i_BFu8c, "aC_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu8i()
{
  {
    init_simple_test("aC_BFu0i_BFu8i");
    static aC_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aC_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu8i(Test_aC_BFu0i_BFu8i, "aC_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu8ll()
{
  {
    init_simple_test("aC_BFu0i_BFu8ll");
    static aC_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aC_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu8ll(Test_aC_BFu0i_BFu8ll, "aC_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu8s()
{
  {
    init_simple_test("aC_BFu0i_BFu8s");
    static aC_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aC_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu8s(Test_aC_BFu0i_BFu8s, "aC_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu9i()
{
  {
    init_simple_test("aC_BFu0i_BFu9i");
    static aC_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aC_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu9i(Test_aC_BFu0i_BFu9i, "aC_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu9ll()
{
  {
    init_simple_test("aC_BFu0i_BFu9ll");
    static aC_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aC_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu9ll(Test_aC_BFu0i_BFu9ll, "aC_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_BFu9s()
{
  {
    init_simple_test("aC_BFu0i_BFu9s");
    static aC_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aC_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_BFu9s(Test_aC_BFu0i_BFu9s, "aC_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_C()
{
  {
    init_simple_test("aC_BFu0i_C");
    static aC_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_C.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_C(Test_aC_BFu0i_C, "aC_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_D()
{
  {
    init_simple_test("aC_BFu0i_D");
    static aC_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_D.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_D(Test_aC_BFu0i_D, "aC_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_F()
{
  {
    init_simple_test("aC_BFu0i_F");
    static aC_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_F.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_F(Test_aC_BFu0i_F, "aC_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_I()
{
  {
    init_simple_test("aC_BFu0i_I");
    static aC_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_I.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_I(Test_aC_BFu0i_I, "aC_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Ip()
{
  {
    init_simple_test("aC_BFu0i_Ip");
    static aC_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Ip(Test_aC_BFu0i_Ip, "aC_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_L()
{
  {
    init_simple_test("aC_BFu0i_L");
    static aC_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_L.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_L(Test_aC_BFu0i_L, "aC_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_S()
{
  {
    init_simple_test("aC_BFu0i_S");
    static aC_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_S.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_S(Test_aC_BFu0i_S, "aC_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Uc()
{
  {
    init_simple_test("aC_BFu0i_Uc");
    static aC_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Uc(Test_aC_BFu0i_Uc, "aC_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Ui()
{
  {
    init_simple_test("aC_BFu0i_Ui");
    static aC_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Ui(Test_aC_BFu0i_Ui, "aC_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Ul()
{
  {
    init_simple_test("aC_BFu0i_Ul");
    static aC_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Ul(Test_aC_BFu0i_Ul, "aC_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Us()
{
  {
    init_simple_test("aC_BFu0i_Us");
    static aC_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Us.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Us(Test_aC_BFu0i_Us, "aC_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0i_Vp()
{
  {
    init_simple_test("aC_BFu0i_Vp");
    static aC_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aC_BFu0i_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(4,4), "aC_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0i_Vp(Test_aC_BFu0i_Vp, "aC_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll()
{
  {
    init_simple_test("aC_BFu0ll");
    static aC_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll(Test_aC_BFu0ll, "aC_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu0c()
{
  {
    init_simple_test("aC_BFu0ll_BFu0c");
    static aC_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu0c(Test_aC_BFu0ll_BFu0c, "aC_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu0i()
{
  {
    init_simple_test("aC_BFu0ll_BFu0i");
    static aC_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu0i(Test_aC_BFu0ll_BFu0i, "aC_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu0ll");
    static aC_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu0ll(Test_aC_BFu0ll_BFu0ll, "aC_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu0s()
{
  {
    init_simple_test("aC_BFu0ll_BFu0s");
    static aC_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu0s(Test_aC_BFu0ll_BFu0s, "aC_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu15i()
{
  {
    init_simple_test("aC_BFu0ll_BFu15i");
    static aC_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aC_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu15i(Test_aC_BFu0ll_BFu15i, "aC_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu15ll");
    static aC_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aC_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu15ll(Test_aC_BFu0ll_BFu15ll, "aC_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu15s()
{
  {
    init_simple_test("aC_BFu0ll_BFu15s");
    static aC_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aC_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aC_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu15s(Test_aC_BFu0ll_BFu15s, "aC_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu16i()
{
  {
    init_simple_test("aC_BFu0ll_BFu16i");
    static aC_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aC_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu16i(Test_aC_BFu0ll_BFu16i, "aC_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu16ll");
    static aC_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aC_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu16ll(Test_aC_BFu0ll_BFu16ll, "aC_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu16s()
{
  {
    init_simple_test("aC_BFu0ll_BFu16s");
    static aC_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aC_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aC_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu16s(Test_aC_BFu0ll_BFu16s, "aC_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu17i()
{
  {
    init_simple_test("aC_BFu0ll_BFu17i");
    static aC_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aC_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aC_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aC_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu17i(Test_aC_BFu0ll_BFu17i, "aC_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu17ll");
    static aC_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aC_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aC_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aC_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu17ll(Test_aC_BFu0ll_BFu17ll, "aC_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu1c()
{
  {
    init_simple_test("aC_BFu0ll_BFu1c");
    static aC_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aC_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu1c(Test_aC_BFu0ll_BFu1c, "aC_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu1i()
{
  {
    init_simple_test("aC_BFu0ll_BFu1i");
    static aC_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aC_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu1i(Test_aC_BFu0ll_BFu1i, "aC_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu1ll");
    static aC_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aC_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu1ll(Test_aC_BFu0ll_BFu1ll, "aC_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu1s()
{
  {
    init_simple_test("aC_BFu0ll_BFu1s");
    static aC_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aC_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu1s(Test_aC_BFu0ll_BFu1s, "aC_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu31i()
{
  {
    init_simple_test("aC_BFu0ll_BFu31i");
    static aC_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aC_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aC_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu31i(Test_aC_BFu0ll_BFu31i, "aC_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu31ll");
    static aC_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aC_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aC_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu31ll(Test_aC_BFu0ll_BFu31ll, "aC_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu32i()
{
  {
    init_simple_test("aC_BFu0ll_BFu32i");
    static aC_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aC_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aC_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu32i(Test_aC_BFu0ll_BFu32i, "aC_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu32ll");
    static aC_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aC_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aC_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu32ll(Test_aC_BFu0ll_BFu32ll, "aC_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu33()
{
  {
    init_simple_test("aC_BFu0ll_BFu33");
    static aC_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aC_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aC_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aC_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu33(Test_aC_BFu0ll_BFu33, "aC_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu7c()
{
  {
    init_simple_test("aC_BFu0ll_BFu7c");
    static aC_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aC_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu7c(Test_aC_BFu0ll_BFu7c, "aC_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu7i()
{
  {
    init_simple_test("aC_BFu0ll_BFu7i");
    static aC_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aC_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu7i(Test_aC_BFu0ll_BFu7i, "aC_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu7ll");
    static aC_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aC_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu7ll(Test_aC_BFu0ll_BFu7ll, "aC_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu7s()
{
  {
    init_simple_test("aC_BFu0ll_BFu7s");
    static aC_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aC_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aC_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu7s(Test_aC_BFu0ll_BFu7s, "aC_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu8c()
{
  {
    init_simple_test("aC_BFu0ll_BFu8c");
    static aC_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aC_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu8c(Test_aC_BFu0ll_BFu8c, "aC_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu8i()
{
  {
    init_simple_test("aC_BFu0ll_BFu8i");
    static aC_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aC_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu8i(Test_aC_BFu0ll_BFu8i, "aC_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu8ll");
    static aC_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aC_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu8ll(Test_aC_BFu0ll_BFu8ll, "aC_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu8s()
{
  {
    init_simple_test("aC_BFu0ll_BFu8s");
    static aC_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aC_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aC_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu8s(Test_aC_BFu0ll_BFu8s, "aC_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu9i()
{
  {
    init_simple_test("aC_BFu0ll_BFu9i");
    static aC_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aC_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu9i(Test_aC_BFu0ll_BFu9i, "aC_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aC_BFu0ll_BFu9ll");
    static aC_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aC_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu9ll(Test_aC_BFu0ll_BFu9ll, "aC_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_BFu9s()
{
  {
    init_simple_test("aC_BFu0ll_BFu9s");
    static aC_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aC_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aC_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_BFu9s(Test_aC_BFu0ll_BFu9s, "aC_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_C()
{
  {
    init_simple_test("aC_BFu0ll_C");
    static aC_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_C(Test_aC_BFu0ll_C, "aC_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_D()
{
  {
    init_simple_test("aC_BFu0ll_D");
    static aC_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_D(Test_aC_BFu0ll_D, "aC_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_F()
{
  {
    init_simple_test("aC_BFu0ll_F");
    static aC_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_F(Test_aC_BFu0ll_F, "aC_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_I()
{
  {
    init_simple_test("aC_BFu0ll_I");
    static aC_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_I(Test_aC_BFu0ll_I, "aC_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Ip()
{
  {
    init_simple_test("aC_BFu0ll_Ip");
    static aC_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aC_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Ip(Test_aC_BFu0ll_Ip, "aC_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_L()
{
  {
    init_simple_test("aC_BFu0ll_L");
    static aC_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_L(Test_aC_BFu0ll_L, "aC_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_S()
{
  {
    init_simple_test("aC_BFu0ll_S");
    static aC_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_S(Test_aC_BFu0ll_S, "aC_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Uc()
{
  {
    init_simple_test("aC_BFu0ll_Uc");
    static aC_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Uc(Test_aC_BFu0ll_Uc, "aC_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Ui()
{
  {
    init_simple_test("aC_BFu0ll_Ui");
    static aC_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Ui(Test_aC_BFu0ll_Ui, "aC_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Ul()
{
  {
    init_simple_test("aC_BFu0ll_Ul");
    static aC_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Ul(Test_aC_BFu0ll_Ul, "aC_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Us()
{
  {
    init_simple_test("aC_BFu0ll_Us");
    static aC_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Us(Test_aC_BFu0ll_Us, "aC_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0ll_Vp()
{
  {
    init_simple_test("aC_BFu0ll_Vp");
    static aC_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aC_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aC_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aC_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0ll_Vp(Test_aC_BFu0ll_Vp, "aC_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s()
{
  {
    init_simple_test("aC_BFu0s");
    static aC_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aC_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0s(Test_aC_BFu0s, "aC_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu0c()
{
  {
    init_simple_test("aC_BFu0s_BFu0c");
    static aC_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aC_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu0c(Test_aC_BFu0s_BFu0c, "aC_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu0i()
{
  {
    init_simple_test("aC_BFu0s_BFu0i");
    static aC_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu0i(Test_aC_BFu0s_BFu0i, "aC_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu0ll()
{
  {
    init_simple_test("aC_BFu0s_BFu0ll");
    static aC_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu0ll(Test_aC_BFu0s_BFu0ll, "aC_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu0s()
{
  {
    init_simple_test("aC_BFu0s_BFu0s");
    static aC_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aC_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu0s(Test_aC_BFu0s_BFu0s, "aC_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu15i()
{
  {
    init_simple_test("aC_BFu0s_BFu15i");
    static aC_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aC_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aC_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu15i(Test_aC_BFu0s_BFu15i, "aC_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu15ll()
{
  {
    init_simple_test("aC_BFu0s_BFu15ll");
    static aC_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aC_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aC_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu15ll(Test_aC_BFu0s_BFu15ll, "aC_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu15s()
{
  {
    init_simple_test("aC_BFu0s_BFu15s");
    static aC_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aC_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aC_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu15s(Test_aC_BFu0s_BFu15s, "aC_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu16i()
{
  {
    init_simple_test("aC_BFu0s_BFu16i");
    static aC_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aC_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aC_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu16i(Test_aC_BFu0s_BFu16i, "aC_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu16ll()
{
  {
    init_simple_test("aC_BFu0s_BFu16ll");
    static aC_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aC_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aC_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu16ll(Test_aC_BFu0s_BFu16ll, "aC_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu16s()
{
  {
    init_simple_test("aC_BFu0s_BFu16s");
    static aC_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aC_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aC_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu16s(Test_aC_BFu0s_BFu16s, "aC_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu17i()
{
  {
    init_simple_test("aC_BFu0s_BFu17i");
    static aC_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aC_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aC_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu17i(Test_aC_BFu0s_BFu17i, "aC_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu17ll()
{
  {
    init_simple_test("aC_BFu0s_BFu17ll");
    static aC_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aC_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aC_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aC_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu17ll(Test_aC_BFu0s_BFu17ll, "aC_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu1c()
{
  {
    init_simple_test("aC_BFu0s_BFu1c");
    static aC_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aC_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu1c(Test_aC_BFu0s_BFu1c, "aC_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu1i()
{
  {
    init_simple_test("aC_BFu0s_BFu1i");
    static aC_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aC_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu1i(Test_aC_BFu0s_BFu1i, "aC_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu1ll()
{
  {
    init_simple_test("aC_BFu0s_BFu1ll");
    static aC_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aC_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu1ll(Test_aC_BFu0s_BFu1ll, "aC_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu1s()
{
  {
    init_simple_test("aC_BFu0s_BFu1s");
    static aC_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aC_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu1s(Test_aC_BFu0s_BFu1s, "aC_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu31i()
{
  {
    init_simple_test("aC_BFu0s_BFu31i");
    static aC_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aC_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aC_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu31i(Test_aC_BFu0s_BFu31i, "aC_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu31ll()
{
  {
    init_simple_test("aC_BFu0s_BFu31ll");
    static aC_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aC_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aC_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu31ll(Test_aC_BFu0s_BFu31ll, "aC_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu32i()
{
  {
    init_simple_test("aC_BFu0s_BFu32i");
    static aC_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aC_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aC_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu32i(Test_aC_BFu0s_BFu32i, "aC_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu32ll()
{
  {
    init_simple_test("aC_BFu0s_BFu32ll");
    static aC_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aC_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aC_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu32ll(Test_aC_BFu0s_BFu32ll, "aC_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu33()
{
  {
    init_simple_test("aC_BFu0s_BFu33");
    static aC_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aC_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aC_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aC_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu33(Test_aC_BFu0s_BFu33, "aC_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu7c()
{
  {
    init_simple_test("aC_BFu0s_BFu7c");
    static aC_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aC_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aC_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu7c(Test_aC_BFu0s_BFu7c, "aC_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu7i()
{
  {
    init_simple_test("aC_BFu0s_BFu7i");
    static aC_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aC_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aC_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu7i(Test_aC_BFu0s_BFu7i, "aC_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu7ll()
{
  {
    init_simple_test("aC_BFu0s_BFu7ll");
    static aC_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aC_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aC_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu7ll(Test_aC_BFu0s_BFu7ll, "aC_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu7s()
{
  {
    init_simple_test("aC_BFu0s_BFu7s");
    static aC_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aC_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aC_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu7s(Test_aC_BFu0s_BFu7s, "aC_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu8c()
{
  {
    init_simple_test("aC_BFu0s_BFu8c");
    static aC_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aC_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aC_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu8c(Test_aC_BFu0s_BFu8c, "aC_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu8i()
{
  {
    init_simple_test("aC_BFu0s_BFu8i");
    static aC_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aC_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aC_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu8i(Test_aC_BFu0s_BFu8i, "aC_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu8ll()
{
  {
    init_simple_test("aC_BFu0s_BFu8ll");
    static aC_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aC_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aC_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu8ll(Test_aC_BFu0s_BFu8ll, "aC_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu8s()
{
  {
    init_simple_test("aC_BFu0s_BFu8s");
    static aC_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aC_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aC_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu8s(Test_aC_BFu0s_BFu8s, "aC_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu9i()
{
  {
    init_simple_test("aC_BFu0s_BFu9i");
    static aC_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aC_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aC_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu9i(Test_aC_BFu0s_BFu9i, "aC_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu9ll()
{
  {
    init_simple_test("aC_BFu0s_BFu9ll");
    static aC_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aC_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aC_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu9ll(Test_aC_BFu0s_BFu9ll, "aC_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_BFu9s()
{
  {
    init_simple_test("aC_BFu0s_BFu9s");
    static aC_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aC_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aC_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_BFu9s(Test_aC_BFu0s_BFu9s, "aC_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_C()
{
  {
    init_simple_test("aC_BFu0s_C");
    static aC_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_C.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_C(Test_aC_BFu0s_C, "aC_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_D()
{
  {
    init_simple_test("aC_BFu0s_D");
    static aC_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_D.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_D(Test_aC_BFu0s_D, "aC_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_F()
{
  {
    init_simple_test("aC_BFu0s_F");
    static aC_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_F.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_F(Test_aC_BFu0s_F, "aC_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_I()
{
  {
    init_simple_test("aC_BFu0s_I");
    static aC_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_I.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_I(Test_aC_BFu0s_I, "aC_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Ip()
{
  {
    init_simple_test("aC_BFu0s_Ip");
    static aC_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Ip(Test_aC_BFu0s_Ip, "aC_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_L()
{
  {
    init_simple_test("aC_BFu0s_L");
    static aC_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_L.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_L(Test_aC_BFu0s_L, "aC_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_S()
{
  {
    init_simple_test("aC_BFu0s_S");
    static aC_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_S.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_S(Test_aC_BFu0s_S, "aC_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Uc()
{
  {
    init_simple_test("aC_BFu0s_Uc");
    static aC_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aC_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Uc(Test_aC_BFu0s_Uc, "aC_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Ui()
{
  {
    init_simple_test("aC_BFu0s_Ui");
    static aC_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Ui(Test_aC_BFu0s_Ui, "aC_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Ul()
{
  {
    init_simple_test("aC_BFu0s_Ul");
    static aC_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Ul(Test_aC_BFu0s_Ul, "aC_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Us()
{
  {
    init_simple_test("aC_BFu0s_Us");
    static aC_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Us.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Us(Test_aC_BFu0s_Us, "aC_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu0s_Vp()
{
  {
    init_simple_test("aC_BFu0s_Vp");
    static aC_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aC_BFu0s_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(2,2), "aC_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaC_BFu0s_Vp(Test_aC_BFu0s_Vp, "aC_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15i_BFu0c()
{
  {
    init_simple_test("aC_BFu15i_BFu0c");
    static aC_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu15i_BFu0c(Test_aC_BFu15i_BFu0c, "aC_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15i_BFu0i()
{
  {
    init_simple_test("aC_BFu15i_BFu0i");
    static aC_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu15i_BFu0i(Test_aC_BFu15i_BFu0i, "aC_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15i_BFu0ll()
{
  {
    init_simple_test("aC_BFu15i_BFu0ll");
    static aC_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu15i_BFu0ll(Test_aC_BFu15i_BFu0ll, "aC_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15i_BFu0s()
{
  {
    init_simple_test("aC_BFu15i_BFu0s");
    static aC_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu15i_BFu0s(Test_aC_BFu15i_BFu0s, "aC_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15ll_BFu0c()
{
  {
    init_simple_test("aC_BFu15ll_BFu0c");
    static aC_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu15ll_BFu0c(Test_aC_BFu15ll_BFu0c, "aC_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15ll_BFu0i()
{
  {
    init_simple_test("aC_BFu15ll_BFu0i");
    static aC_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu15ll_BFu0i(Test_aC_BFu15ll_BFu0i, "aC_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu15ll_BFu0ll");
    static aC_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu15ll_BFu0ll(Test_aC_BFu15ll_BFu0ll, "aC_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15ll_BFu0s()
{
  {
    init_simple_test("aC_BFu15ll_BFu0s");
    static aC_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu15ll_BFu0s(Test_aC_BFu15ll_BFu0s, "aC_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15s_BFu0c()
{
  {
    init_simple_test("aC_BFu15s_BFu0c");
    static aC_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu15s_BFu0c(Test_aC_BFu15s_BFu0c, "aC_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15s_BFu0i()
{
  {
    init_simple_test("aC_BFu15s_BFu0i");
    static aC_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu15s_BFu0i(Test_aC_BFu15s_BFu0i, "aC_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15s_BFu0ll()
{
  {
    init_simple_test("aC_BFu15s_BFu0ll");
    static aC_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu15s_BFu0ll(Test_aC_BFu15s_BFu0ll, "aC_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu15s_BFu0s()
{
  {
    init_simple_test("aC_BFu15s_BFu0s");
    static aC_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aC_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aC_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu15s_BFu0s(Test_aC_BFu15s_BFu0s, "aC_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16i_BFu0c()
{
  {
    init_simple_test("aC_BFu16i_BFu0c");
    static aC_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu16i_BFu0c(Test_aC_BFu16i_BFu0c, "aC_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16i_BFu0i()
{
  {
    init_simple_test("aC_BFu16i_BFu0i");
    static aC_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu16i_BFu0i(Test_aC_BFu16i_BFu0i, "aC_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16i_BFu0ll()
{
  {
    init_simple_test("aC_BFu16i_BFu0ll");
    static aC_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu16i_BFu0ll(Test_aC_BFu16i_BFu0ll, "aC_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16i_BFu0s()
{
  {
    init_simple_test("aC_BFu16i_BFu0s");
    static aC_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu16i_BFu0s(Test_aC_BFu16i_BFu0s, "aC_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16ll_BFu0c()
{
  {
    init_simple_test("aC_BFu16ll_BFu0c");
    static aC_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu16ll_BFu0c(Test_aC_BFu16ll_BFu0c, "aC_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16ll_BFu0i()
{
  {
    init_simple_test("aC_BFu16ll_BFu0i");
    static aC_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu16ll_BFu0i(Test_aC_BFu16ll_BFu0i, "aC_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu16ll_BFu0ll");
    static aC_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu16ll_BFu0ll(Test_aC_BFu16ll_BFu0ll, "aC_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16ll_BFu0s()
{
  {
    init_simple_test("aC_BFu16ll_BFu0s");
    static aC_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu16ll_BFu0s(Test_aC_BFu16ll_BFu0s, "aC_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16s_BFu0c()
{
  {
    init_simple_test("aC_BFu16s_BFu0c");
    static aC_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu16s_BFu0c(Test_aC_BFu16s_BFu0c, "aC_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16s_BFu0i()
{
  {
    init_simple_test("aC_BFu16s_BFu0i");
    static aC_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu16s_BFu0i(Test_aC_BFu16s_BFu0i, "aC_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16s_BFu0ll()
{
  {
    init_simple_test("aC_BFu16s_BFu0ll");
    static aC_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu16s_BFu0ll(Test_aC_BFu16s_BFu0ll, "aC_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu16s_BFu0s()
{
  {
    init_simple_test("aC_BFu16s_BFu0s");
    static aC_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aC_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aC_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu16s_BFu0s(Test_aC_BFu16s_BFu0s, "aC_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17i_BFu0c()
{
  {
    init_simple_test("aC_BFu17i_BFu0c");
    static aC_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu17i_BFu0c(Test_aC_BFu17i_BFu0c, "aC_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17i_BFu0i()
{
  {
    init_simple_test("aC_BFu17i_BFu0i");
    static aC_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu17i_BFu0i(Test_aC_BFu17i_BFu0i, "aC_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17i_BFu0ll()
{
  {
    init_simple_test("aC_BFu17i_BFu0ll");
    static aC_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu17i_BFu0ll(Test_aC_BFu17i_BFu0ll, "aC_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17i_BFu0s()
{
  {
    init_simple_test("aC_BFu17i_BFu0s");
    static aC_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu17i_BFu0s(Test_aC_BFu17i_BFu0s, "aC_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17ll_BFu0c()
{
  {
    init_simple_test("aC_BFu17ll_BFu0c");
    static aC_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu17ll_BFu0c(Test_aC_BFu17ll_BFu0c, "aC_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17ll_BFu0i()
{
  {
    init_simple_test("aC_BFu17ll_BFu0i");
    static aC_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu17ll_BFu0i(Test_aC_BFu17ll_BFu0i, "aC_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu17ll_BFu0ll");
    static aC_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu17ll_BFu0ll(Test_aC_BFu17ll_BFu0ll, "aC_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu17ll_BFu0s()
{
  {
    init_simple_test("aC_BFu17ll_BFu0s");
    static aC_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aC_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aC_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aC_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu17ll_BFu0s(Test_aC_BFu17ll_BFu0s, "aC_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1c_BFu0c()
{
  {
    init_simple_test("aC_BFu1c_BFu0c");
    static aC_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu1c_BFu0c(Test_aC_BFu1c_BFu0c, "aC_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1c_BFu0i()
{
  {
    init_simple_test("aC_BFu1c_BFu0i");
    static aC_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu1c_BFu0i(Test_aC_BFu1c_BFu0i, "aC_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1c_BFu0ll()
{
  {
    init_simple_test("aC_BFu1c_BFu0ll");
    static aC_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu1c_BFu0ll(Test_aC_BFu1c_BFu0ll, "aC_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1c_BFu0s()
{
  {
    init_simple_test("aC_BFu1c_BFu0s");
    static aC_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu1c_BFu0s(Test_aC_BFu1c_BFu0s, "aC_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1i_BFu0c()
{
  {
    init_simple_test("aC_BFu1i_BFu0c");
    static aC_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu1i_BFu0c(Test_aC_BFu1i_BFu0c, "aC_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1i_BFu0i()
{
  {
    init_simple_test("aC_BFu1i_BFu0i");
    static aC_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu1i_BFu0i(Test_aC_BFu1i_BFu0i, "aC_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1i_BFu0ll()
{
  {
    init_simple_test("aC_BFu1i_BFu0ll");
    static aC_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu1i_BFu0ll(Test_aC_BFu1i_BFu0ll, "aC_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1i_BFu0s()
{
  {
    init_simple_test("aC_BFu1i_BFu0s");
    static aC_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu1i_BFu0s(Test_aC_BFu1i_BFu0s, "aC_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1ll_BFu0c()
{
  {
    init_simple_test("aC_BFu1ll_BFu0c");
    static aC_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu1ll_BFu0c(Test_aC_BFu1ll_BFu0c, "aC_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1ll_BFu0i()
{
  {
    init_simple_test("aC_BFu1ll_BFu0i");
    static aC_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu1ll_BFu0i(Test_aC_BFu1ll_BFu0i, "aC_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu1ll_BFu0ll");
    static aC_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu1ll_BFu0ll(Test_aC_BFu1ll_BFu0ll, "aC_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1ll_BFu0s()
{
  {
    init_simple_test("aC_BFu1ll_BFu0s");
    static aC_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu1ll_BFu0s(Test_aC_BFu1ll_BFu0s, "aC_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1s_BFu0c()
{
  {
    init_simple_test("aC_BFu1s_BFu0c");
    static aC_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu1s_BFu0c(Test_aC_BFu1s_BFu0c, "aC_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1s_BFu0i()
{
  {
    init_simple_test("aC_BFu1s_BFu0i");
    static aC_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu1s_BFu0i(Test_aC_BFu1s_BFu0i, "aC_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1s_BFu0ll()
{
  {
    init_simple_test("aC_BFu1s_BFu0ll");
    static aC_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu1s_BFu0ll(Test_aC_BFu1s_BFu0ll, "aC_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu1s_BFu0s()
{
  {
    init_simple_test("aC_BFu1s_BFu0s");
    static aC_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aC_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu1s_BFu0s(Test_aC_BFu1s_BFu0s, "aC_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31i_BFu0c()
{
  {
    init_simple_test("aC_BFu31i_BFu0c");
    static aC_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu31i_BFu0c(Test_aC_BFu31i_BFu0c, "aC_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31i_BFu0i()
{
  {
    init_simple_test("aC_BFu31i_BFu0i");
    static aC_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu31i_BFu0i(Test_aC_BFu31i_BFu0i, "aC_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31i_BFu0ll()
{
  {
    init_simple_test("aC_BFu31i_BFu0ll");
    static aC_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu31i_BFu0ll(Test_aC_BFu31i_BFu0ll, "aC_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31i_BFu0s()
{
  {
    init_simple_test("aC_BFu31i_BFu0s");
    static aC_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu31i_BFu0s(Test_aC_BFu31i_BFu0s, "aC_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31ll_BFu0c()
{
  {
    init_simple_test("aC_BFu31ll_BFu0c");
    static aC_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu31ll_BFu0c(Test_aC_BFu31ll_BFu0c, "aC_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31ll_BFu0i()
{
  {
    init_simple_test("aC_BFu31ll_BFu0i");
    static aC_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu31ll_BFu0i(Test_aC_BFu31ll_BFu0i, "aC_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu31ll_BFu0ll");
    static aC_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu31ll_BFu0ll(Test_aC_BFu31ll_BFu0ll, "aC_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu31ll_BFu0s()
{
  {
    init_simple_test("aC_BFu31ll_BFu0s");
    static aC_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aC_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aC_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu31ll_BFu0s(Test_aC_BFu31ll_BFu0s, "aC_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32i_BFu0c()
{
  {
    init_simple_test("aC_BFu32i_BFu0c");
    static aC_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu32i_BFu0c(Test_aC_BFu32i_BFu0c, "aC_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32i_BFu0i()
{
  {
    init_simple_test("aC_BFu32i_BFu0i");
    static aC_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu32i_BFu0i(Test_aC_BFu32i_BFu0i, "aC_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32i_BFu0ll()
{
  {
    init_simple_test("aC_BFu32i_BFu0ll");
    static aC_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu32i_BFu0ll(Test_aC_BFu32i_BFu0ll, "aC_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32i_BFu0s()
{
  {
    init_simple_test("aC_BFu32i_BFu0s");
    static aC_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu32i_BFu0s(Test_aC_BFu32i_BFu0s, "aC_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32ll_BFu0c()
{
  {
    init_simple_test("aC_BFu32ll_BFu0c");
    static aC_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu32ll_BFu0c(Test_aC_BFu32ll_BFu0c, "aC_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32ll_BFu0i()
{
  {
    init_simple_test("aC_BFu32ll_BFu0i");
    static aC_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu32ll_BFu0i(Test_aC_BFu32ll_BFu0i, "aC_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu32ll_BFu0ll");
    static aC_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu32ll_BFu0ll(Test_aC_BFu32ll_BFu0ll, "aC_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu32ll_BFu0s()
{
  {
    init_simple_test("aC_BFu32ll_BFu0s");
    static aC_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aC_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aC_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu32ll_BFu0s(Test_aC_BFu32ll_BFu0s, "aC_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu33_BFu0c()
{
  {
    init_simple_test("aC_BFu33_BFu0c");
    static aC_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aC_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aC_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aC_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu33_BFu0c(Test_aC_BFu33_BFu0c, "aC_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu33_BFu0i()
{
  {
    init_simple_test("aC_BFu33_BFu0i");
    static aC_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aC_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aC_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu33_BFu0i(Test_aC_BFu33_BFu0i, "aC_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu33_BFu0ll()
{
  {
    init_simple_test("aC_BFu33_BFu0ll");
    static aC_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aC_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aC_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu33_BFu0ll(Test_aC_BFu33_BFu0ll, "aC_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu33_BFu0s()
{
  {
    init_simple_test("aC_BFu33_BFu0s");
    static aC_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aC_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aC_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aC_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu33_BFu0s(Test_aC_BFu33_BFu0s, "aC_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7c_BFu0c()
{
  {
    init_simple_test("aC_BFu7c_BFu0c");
    static aC_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu7c_BFu0c(Test_aC_BFu7c_BFu0c, "aC_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7c_BFu0i()
{
  {
    init_simple_test("aC_BFu7c_BFu0i");
    static aC_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu7c_BFu0i(Test_aC_BFu7c_BFu0i, "aC_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7c_BFu0ll()
{
  {
    init_simple_test("aC_BFu7c_BFu0ll");
    static aC_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu7c_BFu0ll(Test_aC_BFu7c_BFu0ll, "aC_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7c_BFu0s()
{
  {
    init_simple_test("aC_BFu7c_BFu0s");
    static aC_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu7c_BFu0s(Test_aC_BFu7c_BFu0s, "aC_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7i_BFu0c()
{
  {
    init_simple_test("aC_BFu7i_BFu0c");
    static aC_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu7i_BFu0c(Test_aC_BFu7i_BFu0c, "aC_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7i_BFu0i()
{
  {
    init_simple_test("aC_BFu7i_BFu0i");
    static aC_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu7i_BFu0i(Test_aC_BFu7i_BFu0i, "aC_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7i_BFu0ll()
{
  {
    init_simple_test("aC_BFu7i_BFu0ll");
    static aC_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu7i_BFu0ll(Test_aC_BFu7i_BFu0ll, "aC_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7i_BFu0s()
{
  {
    init_simple_test("aC_BFu7i_BFu0s");
    static aC_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu7i_BFu0s(Test_aC_BFu7i_BFu0s, "aC_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7ll_BFu0c()
{
  {
    init_simple_test("aC_BFu7ll_BFu0c");
    static aC_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu7ll_BFu0c(Test_aC_BFu7ll_BFu0c, "aC_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7ll_BFu0i()
{
  {
    init_simple_test("aC_BFu7ll_BFu0i");
    static aC_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu7ll_BFu0i(Test_aC_BFu7ll_BFu0i, "aC_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu7ll_BFu0ll");
    static aC_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu7ll_BFu0ll(Test_aC_BFu7ll_BFu0ll, "aC_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7ll_BFu0s()
{
  {
    init_simple_test("aC_BFu7ll_BFu0s");
    static aC_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu7ll_BFu0s(Test_aC_BFu7ll_BFu0s, "aC_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7s_BFu0c()
{
  {
    init_simple_test("aC_BFu7s_BFu0c");
    static aC_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu7s_BFu0c(Test_aC_BFu7s_BFu0c, "aC_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7s_BFu0i()
{
  {
    init_simple_test("aC_BFu7s_BFu0i");
    static aC_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu7s_BFu0i(Test_aC_BFu7s_BFu0i, "aC_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7s_BFu0ll()
{
  {
    init_simple_test("aC_BFu7s_BFu0ll");
    static aC_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu7s_BFu0ll(Test_aC_BFu7s_BFu0ll, "aC_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu7s_BFu0s()
{
  {
    init_simple_test("aC_BFu7s_BFu0s");
    static aC_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aC_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aC_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu7s_BFu0s(Test_aC_BFu7s_BFu0s, "aC_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8c_BFu0c()
{
  {
    init_simple_test("aC_BFu8c_BFu0c");
    static aC_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8c_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu8c_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu8c_BFu0c(Test_aC_BFu8c_BFu0c, "aC_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8c_BFu0i()
{
  {
    init_simple_test("aC_BFu8c_BFu0i");
    static aC_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8c_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu8c_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu8c_BFu0i(Test_aC_BFu8c_BFu0i, "aC_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8c_BFu0ll()
{
  {
    init_simple_test("aC_BFu8c_BFu0ll");
    static aC_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu8c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu8c_BFu0ll(Test_aC_BFu8c_BFu0ll, "aC_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8c_BFu0s()
{
  {
    init_simple_test("aC_BFu8c_BFu0s");
    static aC_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8c_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu8c_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu8c_BFu0s(Test_aC_BFu8c_BFu0s, "aC_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8i_BFu0c()
{
  {
    init_simple_test("aC_BFu8i_BFu0c");
    static aC_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu8i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu8i_BFu0c(Test_aC_BFu8i_BFu0c, "aC_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8i_BFu0i()
{
  {
    init_simple_test("aC_BFu8i_BFu0i");
    static aC_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu8i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu8i_BFu0i(Test_aC_BFu8i_BFu0i, "aC_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8i_BFu0ll()
{
  {
    init_simple_test("aC_BFu8i_BFu0ll");
    static aC_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu8i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu8i_BFu0ll(Test_aC_BFu8i_BFu0ll, "aC_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8i_BFu0s()
{
  {
    init_simple_test("aC_BFu8i_BFu0s");
    static aC_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu8i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu8i_BFu0s(Test_aC_BFu8i_BFu0s, "aC_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8ll_BFu0c()
{
  {
    init_simple_test("aC_BFu8ll_BFu0c");
    static aC_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu8ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu8ll_BFu0c(Test_aC_BFu8ll_BFu0c, "aC_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8ll_BFu0i()
{
  {
    init_simple_test("aC_BFu8ll_BFu0i");
    static aC_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu8ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu8ll_BFu0i(Test_aC_BFu8ll_BFu0i, "aC_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu8ll_BFu0ll");
    static aC_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu8ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu8ll_BFu0ll(Test_aC_BFu8ll_BFu0ll, "aC_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8ll_BFu0s()
{
  {
    init_simple_test("aC_BFu8ll_BFu0s");
    static aC_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu8ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu8ll_BFu0s(Test_aC_BFu8ll_BFu0s, "aC_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8s_BFu0c()
{
  {
    init_simple_test("aC_BFu8s_BFu0c");
    static aC_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu8s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu8s_BFu0c(Test_aC_BFu8s_BFu0c, "aC_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8s_BFu0i()
{
  {
    init_simple_test("aC_BFu8s_BFu0i");
    static aC_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu8s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu8s_BFu0i(Test_aC_BFu8s_BFu0i, "aC_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8s_BFu0ll()
{
  {
    init_simple_test("aC_BFu8s_BFu0ll");
    static aC_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu8s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu8s_BFu0ll(Test_aC_BFu8s_BFu0ll, "aC_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu8s_BFu0s()
{
  {
    init_simple_test("aC_BFu8s_BFu0s");
    static aC_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu8s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu8s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aC_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aC_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu8s_BFu0s(Test_aC_BFu8s_BFu0s, "aC_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9i_BFu0c()
{
  {
    init_simple_test("aC_BFu9i_BFu0c");
    static aC_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9i_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu9i_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu9i_BFu0c(Test_aC_BFu9i_BFu0c, "aC_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9i_BFu0i()
{
  {
    init_simple_test("aC_BFu9i_BFu0i");
    static aC_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9i_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu9i_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu9i_BFu0i(Test_aC_BFu9i_BFu0i, "aC_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9i_BFu0ll()
{
  {
    init_simple_test("aC_BFu9i_BFu0ll");
    static aC_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu9i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu9i_BFu0ll(Test_aC_BFu9i_BFu0ll, "aC_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9i_BFu0s()
{
  {
    init_simple_test("aC_BFu9i_BFu0s");
    static aC_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9i_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu9i_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu9i_BFu0s(Test_aC_BFu9i_BFu0s, "aC_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9ll_BFu0c()
{
  {
    init_simple_test("aC_BFu9ll_BFu0c");
    static aC_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu9ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu9ll_BFu0c(Test_aC_BFu9ll_BFu0c, "aC_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9ll_BFu0i()
{
  {
    init_simple_test("aC_BFu9ll_BFu0i");
    static aC_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu9ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu9ll_BFu0i(Test_aC_BFu9ll_BFu0i, "aC_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aC_BFu9ll_BFu0ll");
    static aC_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu9ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu9ll_BFu0ll(Test_aC_BFu9ll_BFu0ll, "aC_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9ll_BFu0s()
{
  {
    init_simple_test("aC_BFu9ll_BFu0s");
    static aC_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu9ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu9ll_BFu0s(Test_aC_BFu9ll_BFu0s, "aC_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9s_BFu0c()
{
  {
    init_simple_test("aC_BFu9s_BFu0c");
    static aC_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9s_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_BFu9s_BFu0c.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaC_BFu9s_BFu0c(Test_aC_BFu9s_BFu0c, "aC_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9s_BFu0i()
{
  {
    init_simple_test("aC_BFu9s_BFu0i");
    static aC_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9s_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_BFu9s_BFu0i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaC_BFu9s_BFu0i(Test_aC_BFu9s_BFu0i, "aC_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9s_BFu0ll()
{
  {
    init_simple_test("aC_BFu9s_BFu0ll");
    static aC_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_BFu9s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaC_BFu9s_BFu0ll(Test_aC_BFu9s_BFu0ll, "aC_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_BFu9s_BFu0s()
{
  {
    init_simple_test("aC_BFu9s_BFu0s");
    static aC_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_BFu9s_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_BFu9s_BFu0s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aC_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aC_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaC_BFu9s_BFu0s(Test_aC_BFu9s_BFu0s, "aC_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_C_BFu0c()
{
  {
    init_simple_test("aC_C_BFu0c");
    static aC_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_C_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_C_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_C_BFu0c(Test_aC_C_BFu0c, "aC_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_C_BFu0i()
{
  {
    init_simple_test("aC_C_BFu0i");
    static aC_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_C_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_C_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_C_BFu0i(Test_aC_C_BFu0i, "aC_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_C_BFu0ll()
{
  {
    init_simple_test("aC_C_BFu0ll");
    static aC_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_C_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_C_BFu0ll(Test_aC_C_BFu0ll, "aC_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_C_BFu0s()
{
  {
    init_simple_test("aC_C_BFu0s");
    static aC_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_C_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_C_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_C_BFu0s(Test_aC_C_BFu0s, "aC_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_D_BFu0c()
{
  {
    init_simple_test("aC_D_BFu0c");
    static aC_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aC_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_D_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_D_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_D_BFu0c(Test_aC_D_BFu0c, "aC_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_D_BFu0i()
{
  {
    init_simple_test("aC_D_BFu0i");
    static aC_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_D_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_D_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_D_BFu0i(Test_aC_D_BFu0i, "aC_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_D_BFu0ll()
{
  {
    init_simple_test("aC_D_BFu0ll");
    static aC_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_D_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_D_BFu0ll(Test_aC_D_BFu0ll, "aC_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_D_BFu0s()
{
  {
    init_simple_test("aC_D_BFu0s");
    static aC_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_D_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_D_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_D_BFu0s(Test_aC_D_BFu0s, "aC_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_F_BFu0c()
{
  {
    init_simple_test("aC_F_BFu0c");
    static aC_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_F_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_F_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_F_BFu0c(Test_aC_F_BFu0c, "aC_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_F_BFu0i()
{
  {
    init_simple_test("aC_F_BFu0i");
    static aC_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_F_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_F_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_F_BFu0i(Test_aC_F_BFu0i, "aC_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_F_BFu0ll()
{
  {
    init_simple_test("aC_F_BFu0ll");
    static aC_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_F_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_F_BFu0ll(Test_aC_F_BFu0ll, "aC_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_F_BFu0s()
{
  {
    init_simple_test("aC_F_BFu0s");
    static aC_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_F_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_F_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_F_BFu0s(Test_aC_F_BFu0s, "aC_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_I_BFu0c()
{
  {
    init_simple_test("aC_I_BFu0c");
    static aC_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_I_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_I_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_I_BFu0c(Test_aC_I_BFu0c, "aC_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_I_BFu0i()
{
  {
    init_simple_test("aC_I_BFu0i");
    static aC_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_I_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_I_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_I_BFu0i(Test_aC_I_BFu0i, "aC_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_I_BFu0ll()
{
  {
    init_simple_test("aC_I_BFu0ll");
    static aC_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_I_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_I_BFu0ll(Test_aC_I_BFu0ll, "aC_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_I_BFu0s()
{
  {
    init_simple_test("aC_I_BFu0s");
    static aC_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_I_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_I_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_I_BFu0s(Test_aC_I_BFu0s, "aC_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ip_BFu0c()
{
  {
    init_simple_test("aC_Ip_BFu0c");
    static aC_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Ip_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Ip_BFu0c(Test_aC_Ip_BFu0c, "aC_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ip_BFu0i()
{
  {
    init_simple_test("aC_Ip_BFu0i");
    static aC_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Ip_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Ip_BFu0i(Test_aC_Ip_BFu0i, "aC_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ip_BFu0ll()
{
  {
    init_simple_test("aC_Ip_BFu0ll");
    static aC_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aC_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Ip_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Ip_BFu0ll(Test_aC_Ip_BFu0ll, "aC_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ip_BFu0s()
{
  {
    init_simple_test("aC_Ip_BFu0s");
    static aC_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Ip_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Ip_BFu0s(Test_aC_Ip_BFu0s, "aC_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_L_BFu0c()
{
  {
    init_simple_test("aC_L_BFu0c");
    static aC_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aC_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_L_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_L_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_L_BFu0c(Test_aC_L_BFu0c, "aC_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_L_BFu0i()
{
  {
    init_simple_test("aC_L_BFu0i");
    static aC_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_L_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_L_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_L_BFu0i(Test_aC_L_BFu0i, "aC_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_L_BFu0ll()
{
  {
    init_simple_test("aC_L_BFu0ll");
    static aC_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_L_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_L_BFu0ll(Test_aC_L_BFu0ll, "aC_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_L_BFu0s()
{
  {
    init_simple_test("aC_L_BFu0s");
    static aC_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_L_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_L_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_L_BFu0s(Test_aC_L_BFu0s, "aC_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_S_BFu0c()
{
  {
    init_simple_test("aC_S_BFu0c");
    static aC_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_S_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_S_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_S_BFu0c(Test_aC_S_BFu0c, "aC_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_S_BFu0i()
{
  {
    init_simple_test("aC_S_BFu0i");
    static aC_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_S_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_S_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_S_BFu0i(Test_aC_S_BFu0i, "aC_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_S_BFu0ll()
{
  {
    init_simple_test("aC_S_BFu0ll");
    static aC_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_S_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_S_BFu0ll(Test_aC_S_BFu0ll, "aC_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_S_BFu0s()
{
  {
    init_simple_test("aC_S_BFu0s");
    static aC_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_S_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_S_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_S_BFu0s(Test_aC_S_BFu0s, "aC_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Uc_BFu0c()
{
  {
    init_simple_test("aC_Uc_BFu0c");
    static aC_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aC_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Uc_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Uc_BFu0c(Test_aC_Uc_BFu0c, "aC_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Uc_BFu0i()
{
  {
    init_simple_test("aC_Uc_BFu0i");
    static aC_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Uc_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Uc_BFu0i(Test_aC_Uc_BFu0i, "aC_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Uc_BFu0ll()
{
  {
    init_simple_test("aC_Uc_BFu0ll");
    static aC_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Uc_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Uc_BFu0ll(Test_aC_Uc_BFu0ll, "aC_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Uc_BFu0s()
{
  {
    init_simple_test("aC_Uc_BFu0s");
    static aC_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aC_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Uc_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Uc_BFu0s(Test_aC_Uc_BFu0s, "aC_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ui_BFu0c()
{
  {
    init_simple_test("aC_Ui_BFu0c");
    static aC_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aC_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Ui_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Ui_BFu0c(Test_aC_Ui_BFu0c, "aC_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ui_BFu0i()
{
  {
    init_simple_test("aC_Ui_BFu0i");
    static aC_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Ui_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Ui_BFu0i(Test_aC_Ui_BFu0i, "aC_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ui_BFu0ll()
{
  {
    init_simple_test("aC_Ui_BFu0ll");
    static aC_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aC_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Ui_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Ui_BFu0ll(Test_aC_Ui_BFu0ll, "aC_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ui_BFu0s()
{
  {
    init_simple_test("aC_Ui_BFu0s");
    static aC_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aC_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Ui_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Ui_BFu0s(Test_aC_Ui_BFu0s, "aC_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ul_BFu0c()
{
  {
    init_simple_test("aC_Ul_BFu0c");
    static aC_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aC_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Ul_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Ul_BFu0c(Test_aC_Ul_BFu0c, "aC_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ul_BFu0i()
{
  {
    init_simple_test("aC_Ul_BFu0i");
    static aC_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aC_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Ul_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Ul_BFu0i(Test_aC_Ul_BFu0i, "aC_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ul_BFu0ll()
{
  {
    init_simple_test("aC_Ul_BFu0ll");
    static aC_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aC_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Ul_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Ul_BFu0ll(Test_aC_Ul_BFu0ll, "aC_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Ul_BFu0s()
{
  {
    init_simple_test("aC_Ul_BFu0s");
    static aC_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aC_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Ul_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Ul_BFu0s(Test_aC_Ul_BFu0s, "aC_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Us_BFu0c()
{
  {
    init_simple_test("aC_Us_BFu0c");
    static aC_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aC_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Us_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Us_BFu0c(Test_aC_Us_BFu0c, "aC_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Us_BFu0i()
{
  {
    init_simple_test("aC_Us_BFu0i");
    static aC_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Us_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Us_BFu0i(Test_aC_Us_BFu0i, "aC_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Us_BFu0ll()
{
  {
    init_simple_test("aC_Us_BFu0ll");
    static aC_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aC_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Us_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Us_BFu0ll(Test_aC_Us_BFu0ll, "aC_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Us_BFu0s()
{
  {
    init_simple_test("aC_Us_BFu0s");
    static aC_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aC_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Us_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Us_BFu0s(Test_aC_Us_BFu0s, "aC_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Vp_BFu0c()
{
  {
    init_simple_test("aC_Vp_BFu0c");
    static aC_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aC_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "aC_Vp_BFu0c.v1");
    check_field_offset(lv, v2, 1, "aC_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaC_Vp_BFu0c(Test_aC_Vp_BFu0c, "aC_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Vp_BFu0i()
{
  {
    init_simple_test("aC_Vp_BFu0i");
    static aC_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aC_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "aC_Vp_BFu0i.v1");
    check_field_offset(lv, v2, 1, "aC_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaC_Vp_BFu0i(Test_aC_Vp_BFu0i, "aC_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Vp_BFu0ll()
{
  {
    init_simple_test("aC_Vp_BFu0ll");
    static aC_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aC_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aC_Vp_BFu0ll.v1");
    check_field_offset(lv, v2, 1, "aC_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaC_Vp_BFu0ll(Test_aC_Vp_BFu0ll, "aC_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aC_Vp_BFu0s()
{
  {
    init_simple_test("aC_Vp_BFu0s");
    static aC_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aC_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aC_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "aC_Vp_BFu0s.v1");
    check_field_offset(lv, v2, 1, "aC_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaC_Vp_BFu0s(Test_aC_Vp_BFu0s, "aC_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c()
{
  {
    init_simple_test("aD_BFu0c");
    static aD_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0c(Test_aD_BFu0c, "aD_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu0c()
{
  {
    init_simple_test("aD_BFu0c_BFu0c");
    static aD_BFu0c_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu0c(Test_aD_BFu0c_BFu0c, "aD_BFu0c_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu0i()
{
  {
    init_simple_test("aD_BFu0c_BFu0i");
    static aD_BFu0c_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu0i(Test_aD_BFu0c_BFu0i, "aD_BFu0c_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu0ll()
{
  {
    init_simple_test("aD_BFu0c_BFu0ll");
    static aD_BFu0c_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu0ll(Test_aD_BFu0c_BFu0ll, "aD_BFu0c_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu0s()
{
  {
    init_simple_test("aD_BFu0c_BFu0s");
    static aD_BFu0c_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu0s(Test_aD_BFu0c_BFu0s, "aD_BFu0c_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu15i()
{
  {
    init_simple_test("aD_BFu0c_BFu15i");
    static aD_BFu0c_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu15i(Test_aD_BFu0c_BFu15i, "aD_BFu0c_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu15ll()
{
  {
    init_simple_test("aD_BFu0c_BFu15ll");
    static aD_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu15ll(Test_aD_BFu0c_BFu15ll, "aD_BFu0c_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu15s()
{
  {
    init_simple_test("aD_BFu0c_BFu15s");
    static aD_BFu0c_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu15s(Test_aD_BFu0c_BFu15s, "aD_BFu0c_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu16i()
{
  {
    init_simple_test("aD_BFu0c_BFu16i");
    static aD_BFu0c_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu16i(Test_aD_BFu0c_BFu16i, "aD_BFu0c_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu16ll()
{
  {
    init_simple_test("aD_BFu0c_BFu16ll");
    static aD_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu16ll(Test_aD_BFu0c_BFu16ll, "aD_BFu0c_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu16s()
{
  {
    init_simple_test("aD_BFu0c_BFu16s");
    static aD_BFu0c_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu16s(Test_aD_BFu0c_BFu16s, "aD_BFu0c_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu17i()
{
  {
    init_simple_test("aD_BFu0c_BFu17i");
    static aD_BFu0c_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu17i(Test_aD_BFu0c_BFu17i, "aD_BFu0c_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu17ll()
{
  {
    init_simple_test("aD_BFu0c_BFu17ll");
    static aD_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu17ll(Test_aD_BFu0c_BFu17ll, "aD_BFu0c_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu1c()
{
  {
    init_simple_test("aD_BFu0c_BFu1c");
    static aD_BFu0c_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu1c(Test_aD_BFu0c_BFu1c, "aD_BFu0c_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu1i()
{
  {
    init_simple_test("aD_BFu0c_BFu1i");
    static aD_BFu0c_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu1i(Test_aD_BFu0c_BFu1i, "aD_BFu0c_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu1ll()
{
  {
    init_simple_test("aD_BFu0c_BFu1ll");
    static aD_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu1ll(Test_aD_BFu0c_BFu1ll, "aD_BFu0c_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu1s()
{
  {
    init_simple_test("aD_BFu0c_BFu1s");
    static aD_BFu0c_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu1s(Test_aD_BFu0c_BFu1s, "aD_BFu0c_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu31i()
{
  {
    init_simple_test("aD_BFu0c_BFu31i");
    static aD_BFu0c_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu31i(Test_aD_BFu0c_BFu31i, "aD_BFu0c_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu31ll()
{
  {
    init_simple_test("aD_BFu0c_BFu31ll");
    static aD_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu31ll(Test_aD_BFu0c_BFu31ll, "aD_BFu0c_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu32i()
{
  {
    init_simple_test("aD_BFu0c_BFu32i");
    static aD_BFu0c_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu32i(Test_aD_BFu0c_BFu32i, "aD_BFu0c_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu32ll()
{
  {
    init_simple_test("aD_BFu0c_BFu32ll");
    static aD_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu32ll(Test_aD_BFu0c_BFu32ll, "aD_BFu0c_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu33()
{
  {
    init_simple_test("aD_BFu0c_BFu33");
    static aD_BFu0c_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aD_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu33(Test_aD_BFu0c_BFu33, "aD_BFu0c_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu7c()
{
  {
    init_simple_test("aD_BFu0c_BFu7c");
    static aD_BFu0c_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu7c(Test_aD_BFu0c_BFu7c, "aD_BFu0c_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu7i()
{
  {
    init_simple_test("aD_BFu0c_BFu7i");
    static aD_BFu0c_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu7i(Test_aD_BFu0c_BFu7i, "aD_BFu0c_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu7ll()
{
  {
    init_simple_test("aD_BFu0c_BFu7ll");
    static aD_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu7ll(Test_aD_BFu0c_BFu7ll, "aD_BFu0c_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu7s()
{
  {
    init_simple_test("aD_BFu0c_BFu7s");
    static aD_BFu0c_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu7s(Test_aD_BFu0c_BFu7s, "aD_BFu0c_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu8c()
{
  {
    init_simple_test("aD_BFu0c_BFu8c");
    static aD_BFu0c_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu8c(Test_aD_BFu0c_BFu8c, "aD_BFu0c_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu8i()
{
  {
    init_simple_test("aD_BFu0c_BFu8i");
    static aD_BFu0c_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu8i(Test_aD_BFu0c_BFu8i, "aD_BFu0c_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu8ll()
{
  {
    init_simple_test("aD_BFu0c_BFu8ll");
    static aD_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu8ll(Test_aD_BFu0c_BFu8ll, "aD_BFu0c_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu8s()
{
  {
    init_simple_test("aD_BFu0c_BFu8s");
    static aD_BFu0c_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu8s(Test_aD_BFu0c_BFu8s, "aD_BFu0c_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu9i()
{
  {
    init_simple_test("aD_BFu0c_BFu9i");
    static aD_BFu0c_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu9i(Test_aD_BFu0c_BFu9i, "aD_BFu0c_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu9ll()
{
  {
    init_simple_test("aD_BFu0c_BFu9ll");
    static aD_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu9ll(Test_aD_BFu0c_BFu9ll, "aD_BFu0c_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_BFu9s()
{
  {
    init_simple_test("aD_BFu0c_BFu9s");
    static aD_BFu0c_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_BFu9s(Test_aD_BFu0c_BFu9s, "aD_BFu0c_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_C()
{
  {
    init_simple_test("aD_BFu0c_C");
    static aD_BFu0c_C lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_C.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_C(Test_aD_BFu0c_C, "aD_BFu0c_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_D()
{
  {
    init_simple_test("aD_BFu0c_D");
    static aD_BFu0c_D lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_D.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_D(Test_aD_BFu0c_D, "aD_BFu0c_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_F()
{
  {
    init_simple_test("aD_BFu0c_F");
    static aD_BFu0c_F lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_F.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_F(Test_aD_BFu0c_F, "aD_BFu0c_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_I()
{
  {
    init_simple_test("aD_BFu0c_I");
    static aD_BFu0c_I lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_I.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_I(Test_aD_BFu0c_I, "aD_BFu0c_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Ip()
{
  {
    init_simple_test("aD_BFu0c_Ip");
    static aD_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Ip.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Ip(Test_aD_BFu0c_Ip, "aD_BFu0c_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_L()
{
  {
    init_simple_test("aD_BFu0c_L");
    static aD_BFu0c_L lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_L.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_L(Test_aD_BFu0c_L, "aD_BFu0c_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_S()
{
  {
    init_simple_test("aD_BFu0c_S");
    static aD_BFu0c_S lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_S.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_S(Test_aD_BFu0c_S, "aD_BFu0c_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Uc()
{
  {
    init_simple_test("aD_BFu0c_Uc");
    static aD_BFu0c_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Uc.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Uc(Test_aD_BFu0c_Uc, "aD_BFu0c_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Ui()
{
  {
    init_simple_test("aD_BFu0c_Ui");
    static aD_BFu0c_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Ui.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Ui(Test_aD_BFu0c_Ui, "aD_BFu0c_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Ul()
{
  {
    init_simple_test("aD_BFu0c_Ul");
    static aD_BFu0c_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Ul.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Ul(Test_aD_BFu0c_Ul, "aD_BFu0c_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Us()
{
  {
    init_simple_test("aD_BFu0c_Us");
    static aD_BFu0c_Us lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Us.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Us(Test_aD_BFu0c_Us, "aD_BFu0c_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0c_Vp()
{
  {
    init_simple_test("aD_BFu0c_Vp");
    static aD_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aD_BFu0c_Vp.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0c_Vp(Test_aD_BFu0c_Vp, "aD_BFu0c_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i()
{
  {
    init_simple_test("aD_BFu0i");
    static aD_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0i(Test_aD_BFu0i, "aD_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu0c()
{
  {
    init_simple_test("aD_BFu0i_BFu0c");
    static aD_BFu0i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu0c(Test_aD_BFu0i_BFu0c, "aD_BFu0i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu0i()
{
  {
    init_simple_test("aD_BFu0i_BFu0i");
    static aD_BFu0i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu0i(Test_aD_BFu0i_BFu0i, "aD_BFu0i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu0ll()
{
  {
    init_simple_test("aD_BFu0i_BFu0ll");
    static aD_BFu0i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu0ll(Test_aD_BFu0i_BFu0ll, "aD_BFu0i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu0s()
{
  {
    init_simple_test("aD_BFu0i_BFu0s");
    static aD_BFu0i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu0s(Test_aD_BFu0i_BFu0s, "aD_BFu0i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu15i()
{
  {
    init_simple_test("aD_BFu0i_BFu15i");
    static aD_BFu0i_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu15i(Test_aD_BFu0i_BFu15i, "aD_BFu0i_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu15ll()
{
  {
    init_simple_test("aD_BFu0i_BFu15ll");
    static aD_BFu0i_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu15ll(Test_aD_BFu0i_BFu15ll, "aD_BFu0i_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu15s()
{
  {
    init_simple_test("aD_BFu0i_BFu15s");
    static aD_BFu0i_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu15s(Test_aD_BFu0i_BFu15s, "aD_BFu0i_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu16i()
{
  {
    init_simple_test("aD_BFu0i_BFu16i");
    static aD_BFu0i_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu16i(Test_aD_BFu0i_BFu16i, "aD_BFu0i_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu16ll()
{
  {
    init_simple_test("aD_BFu0i_BFu16ll");
    static aD_BFu0i_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu16ll(Test_aD_BFu0i_BFu16ll, "aD_BFu0i_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu16s()
{
  {
    init_simple_test("aD_BFu0i_BFu16s");
    static aD_BFu0i_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu16s(Test_aD_BFu0i_BFu16s, "aD_BFu0i_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu17i()
{
  {
    init_simple_test("aD_BFu0i_BFu17i");
    static aD_BFu0i_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu17i(Test_aD_BFu0i_BFu17i, "aD_BFu0i_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu17ll()
{
  {
    init_simple_test("aD_BFu0i_BFu17ll");
    static aD_BFu0i_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu17ll(Test_aD_BFu0i_BFu17ll, "aD_BFu0i_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu1c()
{
  {
    init_simple_test("aD_BFu0i_BFu1c");
    static aD_BFu0i_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu1c(Test_aD_BFu0i_BFu1c, "aD_BFu0i_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu1i()
{
  {
    init_simple_test("aD_BFu0i_BFu1i");
    static aD_BFu0i_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu1i(Test_aD_BFu0i_BFu1i, "aD_BFu0i_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu1ll()
{
  {
    init_simple_test("aD_BFu0i_BFu1ll");
    static aD_BFu0i_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu1ll(Test_aD_BFu0i_BFu1ll, "aD_BFu0i_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu1s()
{
  {
    init_simple_test("aD_BFu0i_BFu1s");
    static aD_BFu0i_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu1s(Test_aD_BFu0i_BFu1s, "aD_BFu0i_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu31i()
{
  {
    init_simple_test("aD_BFu0i_BFu31i");
    static aD_BFu0i_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu31i(Test_aD_BFu0i_BFu31i, "aD_BFu0i_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu31ll()
{
  {
    init_simple_test("aD_BFu0i_BFu31ll");
    static aD_BFu0i_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu31ll(Test_aD_BFu0i_BFu31ll, "aD_BFu0i_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu32i()
{
  {
    init_simple_test("aD_BFu0i_BFu32i");
    static aD_BFu0i_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu32i(Test_aD_BFu0i_BFu32i, "aD_BFu0i_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu32ll()
{
  {
    init_simple_test("aD_BFu0i_BFu32ll");
    static aD_BFu0i_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu32ll(Test_aD_BFu0i_BFu32ll, "aD_BFu0i_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu33()
{
  {
    init_simple_test("aD_BFu0i_BFu33");
    static aD_BFu0i_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aD_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu0i_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu33(Test_aD_BFu0i_BFu33, "aD_BFu0i_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu7c()
{
  {
    init_simple_test("aD_BFu0i_BFu7c");
    static aD_BFu0i_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu7c(Test_aD_BFu0i_BFu7c, "aD_BFu0i_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu7i()
{
  {
    init_simple_test("aD_BFu0i_BFu7i");
    static aD_BFu0i_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu7i(Test_aD_BFu0i_BFu7i, "aD_BFu0i_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu7ll()
{
  {
    init_simple_test("aD_BFu0i_BFu7ll");
    static aD_BFu0i_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu7ll(Test_aD_BFu0i_BFu7ll, "aD_BFu0i_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu7s()
{
  {
    init_simple_test("aD_BFu0i_BFu7s");
    static aD_BFu0i_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu7s(Test_aD_BFu0i_BFu7s, "aD_BFu0i_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu8c()
{
  {
    init_simple_test("aD_BFu0i_BFu8c");
    static aD_BFu0i_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu8c(Test_aD_BFu0i_BFu8c, "aD_BFu0i_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu8i()
{
  {
    init_simple_test("aD_BFu0i_BFu8i");
    static aD_BFu0i_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu8i(Test_aD_BFu0i_BFu8i, "aD_BFu0i_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu8ll()
{
  {
    init_simple_test("aD_BFu0i_BFu8ll");
    static aD_BFu0i_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu8ll(Test_aD_BFu0i_BFu8ll, "aD_BFu0i_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu8s()
{
  {
    init_simple_test("aD_BFu0i_BFu8s");
    static aD_BFu0i_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu8s(Test_aD_BFu0i_BFu8s, "aD_BFu0i_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu9i()
{
  {
    init_simple_test("aD_BFu0i_BFu9i");
    static aD_BFu0i_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu9i(Test_aD_BFu0i_BFu9i, "aD_BFu0i_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu9ll()
{
  {
    init_simple_test("aD_BFu0i_BFu9ll");
    static aD_BFu0i_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu9ll(Test_aD_BFu0i_BFu9ll, "aD_BFu0i_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_BFu9s()
{
  {
    init_simple_test("aD_BFu0i_BFu9s");
    static aD_BFu0i_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_BFu9s(Test_aD_BFu0i_BFu9s, "aD_BFu0i_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_C()
{
  {
    init_simple_test("aD_BFu0i_C");
    static aD_BFu0i_C lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_C.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_C(Test_aD_BFu0i_C, "aD_BFu0i_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_D()
{
  {
    init_simple_test("aD_BFu0i_D");
    static aD_BFu0i_D lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_D.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_D(Test_aD_BFu0i_D, "aD_BFu0i_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_F()
{
  {
    init_simple_test("aD_BFu0i_F");
    static aD_BFu0i_F lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_F.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_F(Test_aD_BFu0i_F, "aD_BFu0i_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_I()
{
  {
    init_simple_test("aD_BFu0i_I");
    static aD_BFu0i_I lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_I.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_I(Test_aD_BFu0i_I, "aD_BFu0i_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Ip()
{
  {
    init_simple_test("aD_BFu0i_Ip");
    static aD_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Ip.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Ip(Test_aD_BFu0i_Ip, "aD_BFu0i_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_L()
{
  {
    init_simple_test("aD_BFu0i_L");
    static aD_BFu0i_L lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_L.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_L(Test_aD_BFu0i_L, "aD_BFu0i_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_S()
{
  {
    init_simple_test("aD_BFu0i_S");
    static aD_BFu0i_S lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_S.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_S(Test_aD_BFu0i_S, "aD_BFu0i_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Uc()
{
  {
    init_simple_test("aD_BFu0i_Uc");
    static aD_BFu0i_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Uc.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Uc(Test_aD_BFu0i_Uc, "aD_BFu0i_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Ui()
{
  {
    init_simple_test("aD_BFu0i_Ui");
    static aD_BFu0i_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Ui.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Ui(Test_aD_BFu0i_Ui, "aD_BFu0i_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Ul()
{
  {
    init_simple_test("aD_BFu0i_Ul");
    static aD_BFu0i_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Ul.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Ul(Test_aD_BFu0i_Ul, "aD_BFu0i_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Us()
{
  {
    init_simple_test("aD_BFu0i_Us");
    static aD_BFu0i_Us lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Us.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Us(Test_aD_BFu0i_Us, "aD_BFu0i_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0i_Vp()
{
  {
    init_simple_test("aD_BFu0i_Vp");
    static aD_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aD_BFu0i_Vp.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0i_Vp(Test_aD_BFu0i_Vp, "aD_BFu0i_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll()
{
  {
    init_simple_test("aD_BFu0ll");
    static aD_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll(Test_aD_BFu0ll, "aD_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu0c()
{
  {
    init_simple_test("aD_BFu0ll_BFu0c");
    static aD_BFu0ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu0c(Test_aD_BFu0ll_BFu0c, "aD_BFu0ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu0i()
{
  {
    init_simple_test("aD_BFu0ll_BFu0i");
    static aD_BFu0ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu0i(Test_aD_BFu0ll_BFu0i, "aD_BFu0ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu0ll");
    static aD_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu0ll(Test_aD_BFu0ll_BFu0ll, "aD_BFu0ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu0s()
{
  {
    init_simple_test("aD_BFu0ll_BFu0s");
    static aD_BFu0ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu0s(Test_aD_BFu0ll_BFu0s, "aD_BFu0ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu15i()
{
  {
    init_simple_test("aD_BFu0ll_BFu15i");
    static aD_BFu0ll_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu15i(Test_aD_BFu0ll_BFu15i, "aD_BFu0ll_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu15ll");
    static aD_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu15ll(Test_aD_BFu0ll_BFu15ll, "aD_BFu0ll_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu15s()
{
  {
    init_simple_test("aD_BFu0ll_BFu15s");
    static aD_BFu0ll_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu15s(Test_aD_BFu0ll_BFu15s, "aD_BFu0ll_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu16i()
{
  {
    init_simple_test("aD_BFu0ll_BFu16i");
    static aD_BFu0ll_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu16i(Test_aD_BFu0ll_BFu16i, "aD_BFu0ll_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu16ll");
    static aD_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu16ll(Test_aD_BFu0ll_BFu16ll, "aD_BFu0ll_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu16s()
{
  {
    init_simple_test("aD_BFu0ll_BFu16s");
    static aD_BFu0ll_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu16s(Test_aD_BFu0ll_BFu16s, "aD_BFu0ll_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu17i()
{
  {
    init_simple_test("aD_BFu0ll_BFu17i");
    static aD_BFu0ll_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu17i(Test_aD_BFu0ll_BFu17i, "aD_BFu0ll_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu17ll");
    static aD_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu17ll(Test_aD_BFu0ll_BFu17ll, "aD_BFu0ll_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu1c()
{
  {
    init_simple_test("aD_BFu0ll_BFu1c");
    static aD_BFu0ll_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu1c(Test_aD_BFu0ll_BFu1c, "aD_BFu0ll_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu1i()
{
  {
    init_simple_test("aD_BFu0ll_BFu1i");
    static aD_BFu0ll_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu1i(Test_aD_BFu0ll_BFu1i, "aD_BFu0ll_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu1ll");
    static aD_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu1ll(Test_aD_BFu0ll_BFu1ll, "aD_BFu0ll_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu1s()
{
  {
    init_simple_test("aD_BFu0ll_BFu1s");
    static aD_BFu0ll_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu1s(Test_aD_BFu0ll_BFu1s, "aD_BFu0ll_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu31i()
{
  {
    init_simple_test("aD_BFu0ll_BFu31i");
    static aD_BFu0ll_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu31i(Test_aD_BFu0ll_BFu31i, "aD_BFu0ll_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu31ll");
    static aD_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu31ll(Test_aD_BFu0ll_BFu31ll, "aD_BFu0ll_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu32i()
{
  {
    init_simple_test("aD_BFu0ll_BFu32i");
    static aD_BFu0ll_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu32i(Test_aD_BFu0ll_BFu32i, "aD_BFu0ll_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu32ll");
    static aD_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu32ll(Test_aD_BFu0ll_BFu32ll, "aD_BFu0ll_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu33()
{
  {
    init_simple_test("aD_BFu0ll_BFu33");
    static aD_BFu0ll_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aD_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu33(Test_aD_BFu0ll_BFu33, "aD_BFu0ll_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu7c()
{
  {
    init_simple_test("aD_BFu0ll_BFu7c");
    static aD_BFu0ll_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu7c(Test_aD_BFu0ll_BFu7c, "aD_BFu0ll_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu7i()
{
  {
    init_simple_test("aD_BFu0ll_BFu7i");
    static aD_BFu0ll_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu7i(Test_aD_BFu0ll_BFu7i, "aD_BFu0ll_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu7ll");
    static aD_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu7ll(Test_aD_BFu0ll_BFu7ll, "aD_BFu0ll_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu7s()
{
  {
    init_simple_test("aD_BFu0ll_BFu7s");
    static aD_BFu0ll_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu7s(Test_aD_BFu0ll_BFu7s, "aD_BFu0ll_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu8c()
{
  {
    init_simple_test("aD_BFu0ll_BFu8c");
    static aD_BFu0ll_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu8c(Test_aD_BFu0ll_BFu8c, "aD_BFu0ll_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu8i()
{
  {
    init_simple_test("aD_BFu0ll_BFu8i");
    static aD_BFu0ll_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu8i(Test_aD_BFu0ll_BFu8i, "aD_BFu0ll_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu8ll");
    static aD_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu8ll(Test_aD_BFu0ll_BFu8ll, "aD_BFu0ll_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu8s()
{
  {
    init_simple_test("aD_BFu0ll_BFu8s");
    static aD_BFu0ll_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu8s(Test_aD_BFu0ll_BFu8s, "aD_BFu0ll_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu9i()
{
  {
    init_simple_test("aD_BFu0ll_BFu9i");
    static aD_BFu0ll_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu9i(Test_aD_BFu0ll_BFu9i, "aD_BFu0ll_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aD_BFu0ll_BFu9ll");
    static aD_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu9ll(Test_aD_BFu0ll_BFu9ll, "aD_BFu0ll_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_BFu9s()
{
  {
    init_simple_test("aD_BFu0ll_BFu9s");
    static aD_BFu0ll_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_BFu9s(Test_aD_BFu0ll_BFu9s, "aD_BFu0ll_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_C()
{
  {
    init_simple_test("aD_BFu0ll_C");
    static aD_BFu0ll_C lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_C.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_C(Test_aD_BFu0ll_C, "aD_BFu0ll_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_D()
{
  {
    init_simple_test("aD_BFu0ll_D");
    static aD_BFu0ll_D lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_D.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_D(Test_aD_BFu0ll_D, "aD_BFu0ll_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_F()
{
  {
    init_simple_test("aD_BFu0ll_F");
    static aD_BFu0ll_F lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_F.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_F(Test_aD_BFu0ll_F, "aD_BFu0ll_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_I()
{
  {
    init_simple_test("aD_BFu0ll_I");
    static aD_BFu0ll_I lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_I.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_I(Test_aD_BFu0ll_I, "aD_BFu0ll_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Ip()
{
  {
    init_simple_test("aD_BFu0ll_Ip");
    static aD_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Ip(Test_aD_BFu0ll_Ip, "aD_BFu0ll_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_L()
{
  {
    init_simple_test("aD_BFu0ll_L");
    static aD_BFu0ll_L lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_L.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_L(Test_aD_BFu0ll_L, "aD_BFu0ll_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_S()
{
  {
    init_simple_test("aD_BFu0ll_S");
    static aD_BFu0ll_S lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_S.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_S(Test_aD_BFu0ll_S, "aD_BFu0ll_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Uc()
{
  {
    init_simple_test("aD_BFu0ll_Uc");
    static aD_BFu0ll_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Uc(Test_aD_BFu0ll_Uc, "aD_BFu0ll_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Ui()
{
  {
    init_simple_test("aD_BFu0ll_Ui");
    static aD_BFu0ll_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Ui(Test_aD_BFu0ll_Ui, "aD_BFu0ll_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Ul()
{
  {
    init_simple_test("aD_BFu0ll_Ul");
    static aD_BFu0ll_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Ul(Test_aD_BFu0ll_Ul, "aD_BFu0ll_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Us()
{
  {
    init_simple_test("aD_BFu0ll_Us");
    static aD_BFu0ll_Us lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Us.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Us(Test_aD_BFu0ll_Us, "aD_BFu0ll_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0ll_Vp()
{
  {
    init_simple_test("aD_BFu0ll_Vp");
    static aD_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aD_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0ll_Vp(Test_aD_BFu0ll_Vp, "aD_BFu0ll_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s()
{
  {
    init_simple_test("aD_BFu0s");
    static aD_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0s(Test_aD_BFu0s, "aD_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu0c()
{
  {
    init_simple_test("aD_BFu0s_BFu0c");
    static aD_BFu0s_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu0c(Test_aD_BFu0s_BFu0c, "aD_BFu0s_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu0i()
{
  {
    init_simple_test("aD_BFu0s_BFu0i");
    static aD_BFu0s_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu0i(Test_aD_BFu0s_BFu0i, "aD_BFu0s_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu0ll()
{
  {
    init_simple_test("aD_BFu0s_BFu0ll");
    static aD_BFu0s_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu0ll(Test_aD_BFu0s_BFu0ll, "aD_BFu0s_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu0s()
{
  {
    init_simple_test("aD_BFu0s_BFu0s");
    static aD_BFu0s_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aD_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu0s(Test_aD_BFu0s_BFu0s, "aD_BFu0s_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu15i()
{
  {
    init_simple_test("aD_BFu0s_BFu15i");
    static aD_BFu0s_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu15i(Test_aD_BFu0s_BFu15i, "aD_BFu0s_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu15ll()
{
  {
    init_simple_test("aD_BFu0s_BFu15ll");
    static aD_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu15ll(Test_aD_BFu0s_BFu15ll, "aD_BFu0s_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu15s()
{
  {
    init_simple_test("aD_BFu0s_BFu15s");
    static aD_BFu0s_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu15s(Test_aD_BFu0s_BFu15s, "aD_BFu0s_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu16i()
{
  {
    init_simple_test("aD_BFu0s_BFu16i");
    static aD_BFu0s_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu16i(Test_aD_BFu0s_BFu16i, "aD_BFu0s_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu16ll()
{
  {
    init_simple_test("aD_BFu0s_BFu16ll");
    static aD_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu16ll(Test_aD_BFu0s_BFu16ll, "aD_BFu0s_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu16s()
{
  {
    init_simple_test("aD_BFu0s_BFu16s");
    static aD_BFu0s_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu16s(Test_aD_BFu0s_BFu16s, "aD_BFu0s_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu17i()
{
  {
    init_simple_test("aD_BFu0s_BFu17i");
    static aD_BFu0s_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu17i(Test_aD_BFu0s_BFu17i, "aD_BFu0s_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu17ll()
{
  {
    init_simple_test("aD_BFu0s_BFu17ll");
    static aD_BFu0s_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu17ll(Test_aD_BFu0s_BFu17ll, "aD_BFu0s_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu1c()
{
  {
    init_simple_test("aD_BFu0s_BFu1c");
    static aD_BFu0s_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu1c(Test_aD_BFu0s_BFu1c, "aD_BFu0s_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu1i()
{
  {
    init_simple_test("aD_BFu0s_BFu1i");
    static aD_BFu0s_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu1i(Test_aD_BFu0s_BFu1i, "aD_BFu0s_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu1ll()
{
  {
    init_simple_test("aD_BFu0s_BFu1ll");
    static aD_BFu0s_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu1ll(Test_aD_BFu0s_BFu1ll, "aD_BFu0s_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu1s()
{
  {
    init_simple_test("aD_BFu0s_BFu1s");
    static aD_BFu0s_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu1s(Test_aD_BFu0s_BFu1s, "aD_BFu0s_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu31i()
{
  {
    init_simple_test("aD_BFu0s_BFu31i");
    static aD_BFu0s_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu31i(Test_aD_BFu0s_BFu31i, "aD_BFu0s_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu31ll()
{
  {
    init_simple_test("aD_BFu0s_BFu31ll");
    static aD_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu31ll(Test_aD_BFu0s_BFu31ll, "aD_BFu0s_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu32i()
{
  {
    init_simple_test("aD_BFu0s_BFu32i");
    static aD_BFu0s_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu32i(Test_aD_BFu0s_BFu32i, "aD_BFu0s_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu32ll()
{
  {
    init_simple_test("aD_BFu0s_BFu32ll");
    static aD_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu32ll(Test_aD_BFu0s_BFu32ll, "aD_BFu0s_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu33()
{
  {
    init_simple_test("aD_BFu0s_BFu33");
    static aD_BFu0s_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aD_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu33(Test_aD_BFu0s_BFu33, "aD_BFu0s_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu7c()
{
  {
    init_simple_test("aD_BFu0s_BFu7c");
    static aD_BFu0s_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu7c(Test_aD_BFu0s_BFu7c, "aD_BFu0s_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu7i()
{
  {
    init_simple_test("aD_BFu0s_BFu7i");
    static aD_BFu0s_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu7i(Test_aD_BFu0s_BFu7i, "aD_BFu0s_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu7ll()
{
  {
    init_simple_test("aD_BFu0s_BFu7ll");
    static aD_BFu0s_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu7ll(Test_aD_BFu0s_BFu7ll, "aD_BFu0s_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu7s()
{
  {
    init_simple_test("aD_BFu0s_BFu7s");
    static aD_BFu0s_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu7s(Test_aD_BFu0s_BFu7s, "aD_BFu0s_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu8c()
{
  {
    init_simple_test("aD_BFu0s_BFu8c");
    static aD_BFu0s_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu8c(Test_aD_BFu0s_BFu8c, "aD_BFu0s_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu8i()
{
  {
    init_simple_test("aD_BFu0s_BFu8i");
    static aD_BFu0s_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu8i(Test_aD_BFu0s_BFu8i, "aD_BFu0s_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu8ll()
{
  {
    init_simple_test("aD_BFu0s_BFu8ll");
    static aD_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu8ll(Test_aD_BFu0s_BFu8ll, "aD_BFu0s_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu8s()
{
  {
    init_simple_test("aD_BFu0s_BFu8s");
    static aD_BFu0s_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu8s(Test_aD_BFu0s_BFu8s, "aD_BFu0s_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu9i()
{
  {
    init_simple_test("aD_BFu0s_BFu9i");
    static aD_BFu0s_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu9i(Test_aD_BFu0s_BFu9i, "aD_BFu0s_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu9ll()
{
  {
    init_simple_test("aD_BFu0s_BFu9ll");
    static aD_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu9ll(Test_aD_BFu0s_BFu9ll, "aD_BFu0s_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_BFu9s()
{
  {
    init_simple_test("aD_BFu0s_BFu9s");
    static aD_BFu0s_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_BFu9s(Test_aD_BFu0s_BFu9s, "aD_BFu0s_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_C()
{
  {
    init_simple_test("aD_BFu0s_C");
    static aD_BFu0s_C lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_C.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_C(Test_aD_BFu0s_C, "aD_BFu0s_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_D()
{
  {
    init_simple_test("aD_BFu0s_D");
    static aD_BFu0s_D lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_D.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_D(Test_aD_BFu0s_D, "aD_BFu0s_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_F()
{
  {
    init_simple_test("aD_BFu0s_F");
    static aD_BFu0s_F lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_F.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_F(Test_aD_BFu0s_F, "aD_BFu0s_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_I()
{
  {
    init_simple_test("aD_BFu0s_I");
    static aD_BFu0s_I lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_I.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_I(Test_aD_BFu0s_I, "aD_BFu0s_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Ip()
{
  {
    init_simple_test("aD_BFu0s_Ip");
    static aD_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Ip.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Ip(Test_aD_BFu0s_Ip, "aD_BFu0s_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_L()
{
  {
    init_simple_test("aD_BFu0s_L");
    static aD_BFu0s_L lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_L.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_L(Test_aD_BFu0s_L, "aD_BFu0s_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_S()
{
  {
    init_simple_test("aD_BFu0s_S");
    static aD_BFu0s_S lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_S.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_S(Test_aD_BFu0s_S, "aD_BFu0s_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Uc()
{
  {
    init_simple_test("aD_BFu0s_Uc");
    static aD_BFu0s_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Uc.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Uc(Test_aD_BFu0s_Uc, "aD_BFu0s_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Ui()
{
  {
    init_simple_test("aD_BFu0s_Ui");
    static aD_BFu0s_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Ui.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Ui(Test_aD_BFu0s_Ui, "aD_BFu0s_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Ul()
{
  {
    init_simple_test("aD_BFu0s_Ul");
    static aD_BFu0s_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aD_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Ul.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Ul(Test_aD_BFu0s_Ul, "aD_BFu0s_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Us()
{
  {
    init_simple_test("aD_BFu0s_Us");
    static aD_BFu0s_Us lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Us.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Us(Test_aD_BFu0s_Us, "aD_BFu0s_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu0s_Vp()
{
  {
    init_simple_test("aD_BFu0s_Vp");
    static aD_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aD_BFu0s_Vp.v1");
    check_field_offset(lv, v2, 8, "aD_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaD_BFu0s_Vp(Test_aD_BFu0s_Vp, "aD_BFu0s_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15i_BFu0c()
{
  {
    init_simple_test("aD_BFu15i_BFu0c");
    static aD_BFu15i_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu15i_BFu0c(Test_aD_BFu15i_BFu0c, "aD_BFu15i_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15i_BFu0i()
{
  {
    init_simple_test("aD_BFu15i_BFu0i");
    static aD_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu15i_BFu0i(Test_aD_BFu15i_BFu0i, "aD_BFu15i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15i_BFu0ll()
{
  {
    init_simple_test("aD_BFu15i_BFu0ll");
    static aD_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu15i_BFu0ll(Test_aD_BFu15i_BFu0ll, "aD_BFu15i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15i_BFu0s()
{
  {
    init_simple_test("aD_BFu15i_BFu0s");
    static aD_BFu15i_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu15i_BFu0s(Test_aD_BFu15i_BFu0s, "aD_BFu15i_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15ll_BFu0c()
{
  {
    init_simple_test("aD_BFu15ll_BFu0c");
    static aD_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu15ll_BFu0c(Test_aD_BFu15ll_BFu0c, "aD_BFu15ll_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15ll_BFu0i()
{
  {
    init_simple_test("aD_BFu15ll_BFu0i");
    static aD_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu15ll_BFu0i(Test_aD_BFu15ll_BFu0i, "aD_BFu15ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu15ll_BFu0ll");
    static aD_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu15ll_BFu0ll(Test_aD_BFu15ll_BFu0ll, "aD_BFu15ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15ll_BFu0s()
{
  {
    init_simple_test("aD_BFu15ll_BFu0s");
    static aD_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu15ll_BFu0s(Test_aD_BFu15ll_BFu0s, "aD_BFu15ll_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15s_BFu0c()
{
  {
    init_simple_test("aD_BFu15s_BFu0c");
    static aD_BFu15s_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu15s_BFu0c(Test_aD_BFu15s_BFu0c, "aD_BFu15s_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15s_BFu0i()
{
  {
    init_simple_test("aD_BFu15s_BFu0i");
    static aD_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu15s_BFu0i(Test_aD_BFu15s_BFu0i, "aD_BFu15s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15s_BFu0ll()
{
  {
    init_simple_test("aD_BFu15s_BFu0ll");
    static aD_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu15s_BFu0ll(Test_aD_BFu15s_BFu0ll, "aD_BFu15s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu15s_BFu0s()
{
  {
    init_simple_test("aD_BFu15s_BFu0s");
    static aD_BFu15s_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aD_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aD_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu15s_BFu0s(Test_aD_BFu15s_BFu0s, "aD_BFu15s_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16i_BFu0c()
{
  {
    init_simple_test("aD_BFu16i_BFu0c");
    static aD_BFu16i_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu16i_BFu0c(Test_aD_BFu16i_BFu0c, "aD_BFu16i_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16i_BFu0i()
{
  {
    init_simple_test("aD_BFu16i_BFu0i");
    static aD_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu16i_BFu0i(Test_aD_BFu16i_BFu0i, "aD_BFu16i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16i_BFu0ll()
{
  {
    init_simple_test("aD_BFu16i_BFu0ll");
    static aD_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu16i_BFu0ll(Test_aD_BFu16i_BFu0ll, "aD_BFu16i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16i_BFu0s()
{
  {
    init_simple_test("aD_BFu16i_BFu0s");
    static aD_BFu16i_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu16i_BFu0s(Test_aD_BFu16i_BFu0s, "aD_BFu16i_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16ll_BFu0c()
{
  {
    init_simple_test("aD_BFu16ll_BFu0c");
    static aD_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu16ll_BFu0c(Test_aD_BFu16ll_BFu0c, "aD_BFu16ll_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16ll_BFu0i()
{
  {
    init_simple_test("aD_BFu16ll_BFu0i");
    static aD_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu16ll_BFu0i(Test_aD_BFu16ll_BFu0i, "aD_BFu16ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu16ll_BFu0ll");
    static aD_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu16ll_BFu0ll(Test_aD_BFu16ll_BFu0ll, "aD_BFu16ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16ll_BFu0s()
{
  {
    init_simple_test("aD_BFu16ll_BFu0s");
    static aD_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu16ll_BFu0s(Test_aD_BFu16ll_BFu0s, "aD_BFu16ll_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16s_BFu0c()
{
  {
    init_simple_test("aD_BFu16s_BFu0c");
    static aD_BFu16s_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu16s_BFu0c(Test_aD_BFu16s_BFu0c, "aD_BFu16s_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16s_BFu0i()
{
  {
    init_simple_test("aD_BFu16s_BFu0i");
    static aD_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu16s_BFu0i(Test_aD_BFu16s_BFu0i, "aD_BFu16s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16s_BFu0ll()
{
  {
    init_simple_test("aD_BFu16s_BFu0ll");
    static aD_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu16s_BFu0ll(Test_aD_BFu16s_BFu0ll, "aD_BFu16s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu16s_BFu0s()
{
  {
    init_simple_test("aD_BFu16s_BFu0s");
    static aD_BFu16s_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aD_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aD_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu16s_BFu0s(Test_aD_BFu16s_BFu0s, "aD_BFu16s_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17i_BFu0c()
{
  {
    init_simple_test("aD_BFu17i_BFu0c");
    static aD_BFu17i_BFu0c lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu17i_BFu0c(Test_aD_BFu17i_BFu0c, "aD_BFu17i_BFu0c", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17i_BFu0i()
{
  {
    init_simple_test("aD_BFu17i_BFu0i");
    static aD_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu17i_BFu0i(Test_aD_BFu17i_BFu0i, "aD_BFu17i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17i_BFu0ll()
{
  {
    init_simple_test("aD_BFu17i_BFu0ll");
    static aD_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu17i_BFu0ll(Test_aD_BFu17i_BFu0ll, "aD_BFu17i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17i_BFu0s()
{
  {
    init_simple_test("aD_BFu17i_BFu0s");
    static aD_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu17i_BFu0s(Test_aD_BFu17i_BFu0s, "aD_BFu17i_BFu0s", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17ll_BFu0c()
{
  {
    init_simple_test("aD_BFu17ll_BFu0c");
    static aD_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 11, "sizeof(aD_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu17ll_BFu0c(Test_aD_BFu17ll_BFu0c, "aD_BFu17ll_BFu0c", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17ll_BFu0i()
{
  {
    init_simple_test("aD_BFu17ll_BFu0i");
    static aD_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu17ll_BFu0i(Test_aD_BFu17ll_BFu0i, "aD_BFu17ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu17ll_BFu0ll");
    static aD_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu17ll_BFu0ll(Test_aD_BFu17ll_BFu0ll, "aD_BFu17ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu17ll_BFu0s()
{
  {
    init_simple_test("aD_BFu17ll_BFu0s");
    static aD_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aD_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aD_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu17ll_BFu0s(Test_aD_BFu17ll_BFu0s, "aD_BFu17ll_BFu0s", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1c_BFu0c()
{
  {
    init_simple_test("aD_BFu1c_BFu0c");
    static aD_BFu1c_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu1c_BFu0c(Test_aD_BFu1c_BFu0c, "aD_BFu1c_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1c_BFu0i()
{
  {
    init_simple_test("aD_BFu1c_BFu0i");
    static aD_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu1c_BFu0i(Test_aD_BFu1c_BFu0i, "aD_BFu1c_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1c_BFu0ll()
{
  {
    init_simple_test("aD_BFu1c_BFu0ll");
    static aD_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu1c_BFu0ll(Test_aD_BFu1c_BFu0ll, "aD_BFu1c_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1c_BFu0s()
{
  {
    init_simple_test("aD_BFu1c_BFu0s");
    static aD_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu1c_BFu0s(Test_aD_BFu1c_BFu0s, "aD_BFu1c_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1i_BFu0c()
{
  {
    init_simple_test("aD_BFu1i_BFu0c");
    static aD_BFu1i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu1i_BFu0c(Test_aD_BFu1i_BFu0c, "aD_BFu1i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1i_BFu0i()
{
  {
    init_simple_test("aD_BFu1i_BFu0i");
    static aD_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu1i_BFu0i(Test_aD_BFu1i_BFu0i, "aD_BFu1i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1i_BFu0ll()
{
  {
    init_simple_test("aD_BFu1i_BFu0ll");
    static aD_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu1i_BFu0ll(Test_aD_BFu1i_BFu0ll, "aD_BFu1i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1i_BFu0s()
{
  {
    init_simple_test("aD_BFu1i_BFu0s");
    static aD_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu1i_BFu0s(Test_aD_BFu1i_BFu0s, "aD_BFu1i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1ll_BFu0c()
{
  {
    init_simple_test("aD_BFu1ll_BFu0c");
    static aD_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu1ll_BFu0c(Test_aD_BFu1ll_BFu0c, "aD_BFu1ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1ll_BFu0i()
{
  {
    init_simple_test("aD_BFu1ll_BFu0i");
    static aD_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu1ll_BFu0i(Test_aD_BFu1ll_BFu0i, "aD_BFu1ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu1ll_BFu0ll");
    static aD_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu1ll_BFu0ll(Test_aD_BFu1ll_BFu0ll, "aD_BFu1ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1ll_BFu0s()
{
  {
    init_simple_test("aD_BFu1ll_BFu0s");
    static aD_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu1ll_BFu0s(Test_aD_BFu1ll_BFu0s, "aD_BFu1ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1s_BFu0c()
{
  {
    init_simple_test("aD_BFu1s_BFu0c");
    static aD_BFu1s_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu1s_BFu0c(Test_aD_BFu1s_BFu0c, "aD_BFu1s_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1s_BFu0i()
{
  {
    init_simple_test("aD_BFu1s_BFu0i");
    static aD_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu1s_BFu0i(Test_aD_BFu1s_BFu0i, "aD_BFu1s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1s_BFu0ll()
{
  {
    init_simple_test("aD_BFu1s_BFu0ll");
    static aD_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu1s_BFu0ll(Test_aD_BFu1s_BFu0ll, "aD_BFu1s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu1s_BFu0s()
{
  {
    init_simple_test("aD_BFu1s_BFu0s");
    static aD_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aD_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu1s_BFu0s(Test_aD_BFu1s_BFu0s, "aD_BFu1s_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31i_BFu0c()
{
  {
    init_simple_test("aD_BFu31i_BFu0c");
    static aD_BFu31i_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu31i_BFu0c(Test_aD_BFu31i_BFu0c, "aD_BFu31i_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31i_BFu0i()
{
  {
    init_simple_test("aD_BFu31i_BFu0i");
    static aD_BFu31i_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu31i_BFu0i(Test_aD_BFu31i_BFu0i, "aD_BFu31i_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31i_BFu0ll()
{
  {
    init_simple_test("aD_BFu31i_BFu0ll");
    static aD_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu31i_BFu0ll(Test_aD_BFu31i_BFu0ll, "aD_BFu31i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31i_BFu0s()
{
  {
    init_simple_test("aD_BFu31i_BFu0s");
    static aD_BFu31i_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu31i_BFu0s(Test_aD_BFu31i_BFu0s, "aD_BFu31i_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31ll_BFu0c()
{
  {
    init_simple_test("aD_BFu31ll_BFu0c");
    static aD_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu31ll_BFu0c(Test_aD_BFu31ll_BFu0c, "aD_BFu31ll_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31ll_BFu0i()
{
  {
    init_simple_test("aD_BFu31ll_BFu0i");
    static aD_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu31ll_BFu0i(Test_aD_BFu31ll_BFu0i, "aD_BFu31ll_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu31ll_BFu0ll");
    static aD_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu31ll_BFu0ll(Test_aD_BFu31ll_BFu0ll, "aD_BFu31ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu31ll_BFu0s()
{
  {
    init_simple_test("aD_BFu31ll_BFu0s");
    static aD_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aD_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aD_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu31ll_BFu0s(Test_aD_BFu31ll_BFu0s, "aD_BFu31ll_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32i_BFu0c()
{
  {
    init_simple_test("aD_BFu32i_BFu0c");
    static aD_BFu32i_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu32i_BFu0c(Test_aD_BFu32i_BFu0c, "aD_BFu32i_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32i_BFu0i()
{
  {
    init_simple_test("aD_BFu32i_BFu0i");
    static aD_BFu32i_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu32i_BFu0i(Test_aD_BFu32i_BFu0i, "aD_BFu32i_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32i_BFu0ll()
{
  {
    init_simple_test("aD_BFu32i_BFu0ll");
    static aD_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu32i_BFu0ll(Test_aD_BFu32i_BFu0ll, "aD_BFu32i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32i_BFu0s()
{
  {
    init_simple_test("aD_BFu32i_BFu0s");
    static aD_BFu32i_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu32i_BFu0s(Test_aD_BFu32i_BFu0s, "aD_BFu32i_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32ll_BFu0c()
{
  {
    init_simple_test("aD_BFu32ll_BFu0c");
    static aD_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu32ll_BFu0c(Test_aD_BFu32ll_BFu0c, "aD_BFu32ll_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32ll_BFu0i()
{
  {
    init_simple_test("aD_BFu32ll_BFu0i");
    static aD_BFu32ll_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu32ll_BFu0i(Test_aD_BFu32ll_BFu0i, "aD_BFu32ll_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu32ll_BFu0ll");
    static aD_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu32ll_BFu0ll(Test_aD_BFu32ll_BFu0ll, "aD_BFu32ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu32ll_BFu0s()
{
  {
    init_simple_test("aD_BFu32ll_BFu0s");
    static aD_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aD_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aD_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu32ll_BFu0s(Test_aD_BFu32ll_BFu0s, "aD_BFu32ll_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu33_BFu0c()
{
  {
    init_simple_test("aD_BFu33_BFu0c");
    static aD_BFu33_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aD_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu33_BFu0c(Test_aD_BFu33_BFu0c, "aD_BFu33_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu33_BFu0i()
{
  {
    init_simple_test("aD_BFu33_BFu0i");
    static aD_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aD_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu33_BFu0i(Test_aD_BFu33_BFu0i, "aD_BFu33_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu33_BFu0ll()
{
  {
    init_simple_test("aD_BFu33_BFu0ll");
    static aD_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aD_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu33_BFu0ll(Test_aD_BFu33_BFu0ll, "aD_BFu33_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu33_BFu0s()
{
  {
    init_simple_test("aD_BFu33_BFu0s");
    static aD_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aD_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aD_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aD_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu33_BFu0s(Test_aD_BFu33_BFu0s, "aD_BFu33_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7c_BFu0c()
{
  {
    init_simple_test("aD_BFu7c_BFu0c");
    static aD_BFu7c_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu7c_BFu0c(Test_aD_BFu7c_BFu0c, "aD_BFu7c_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7c_BFu0i()
{
  {
    init_simple_test("aD_BFu7c_BFu0i");
    static aD_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu7c_BFu0i(Test_aD_BFu7c_BFu0i, "aD_BFu7c_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7c_BFu0ll()
{
  {
    init_simple_test("aD_BFu7c_BFu0ll");
    static aD_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu7c_BFu0ll(Test_aD_BFu7c_BFu0ll, "aD_BFu7c_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7c_BFu0s()
{
  {
    init_simple_test("aD_BFu7c_BFu0s");
    static aD_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu7c_BFu0s(Test_aD_BFu7c_BFu0s, "aD_BFu7c_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7i_BFu0c()
{
  {
    init_simple_test("aD_BFu7i_BFu0c");
    static aD_BFu7i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu7i_BFu0c(Test_aD_BFu7i_BFu0c, "aD_BFu7i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7i_BFu0i()
{
  {
    init_simple_test("aD_BFu7i_BFu0i");
    static aD_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu7i_BFu0i(Test_aD_BFu7i_BFu0i, "aD_BFu7i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7i_BFu0ll()
{
  {
    init_simple_test("aD_BFu7i_BFu0ll");
    static aD_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu7i_BFu0ll(Test_aD_BFu7i_BFu0ll, "aD_BFu7i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7i_BFu0s()
{
  {
    init_simple_test("aD_BFu7i_BFu0s");
    static aD_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu7i_BFu0s(Test_aD_BFu7i_BFu0s, "aD_BFu7i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7ll_BFu0c()
{
  {
    init_simple_test("aD_BFu7ll_BFu0c");
    static aD_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu7ll_BFu0c(Test_aD_BFu7ll_BFu0c, "aD_BFu7ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7ll_BFu0i()
{
  {
    init_simple_test("aD_BFu7ll_BFu0i");
    static aD_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu7ll_BFu0i(Test_aD_BFu7ll_BFu0i, "aD_BFu7ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu7ll_BFu0ll");
    static aD_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu7ll_BFu0ll(Test_aD_BFu7ll_BFu0ll, "aD_BFu7ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7ll_BFu0s()
{
  {
    init_simple_test("aD_BFu7ll_BFu0s");
    static aD_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu7ll_BFu0s(Test_aD_BFu7ll_BFu0s, "aD_BFu7ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7s_BFu0c()
{
  {
    init_simple_test("aD_BFu7s_BFu0c");
    static aD_BFu7s_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu7s_BFu0c(Test_aD_BFu7s_BFu0c, "aD_BFu7s_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7s_BFu0i()
{
  {
    init_simple_test("aD_BFu7s_BFu0i");
    static aD_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu7s_BFu0i(Test_aD_BFu7s_BFu0i, "aD_BFu7s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7s_BFu0ll()
{
  {
    init_simple_test("aD_BFu7s_BFu0ll");
    static aD_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu7s_BFu0ll(Test_aD_BFu7s_BFu0ll, "aD_BFu7s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu7s_BFu0s()
{
  {
    init_simple_test("aD_BFu7s_BFu0s");
    static aD_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aD_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aD_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu7s_BFu0s(Test_aD_BFu7s_BFu0s, "aD_BFu7s_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8c_BFu0c()
{
  {
    init_simple_test("aD_BFu8c_BFu0c");
    static aD_BFu8c_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8c_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu8c_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu8c_BFu0c(Test_aD_BFu8c_BFu0c, "aD_BFu8c_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8c_BFu0i()
{
  {
    init_simple_test("aD_BFu8c_BFu0i");
    static aD_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8c_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu8c_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu8c_BFu0i(Test_aD_BFu8c_BFu0i, "aD_BFu8c_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8c_BFu0ll()
{
  {
    init_simple_test("aD_BFu8c_BFu0ll");
    static aD_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu8c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu8c_BFu0ll(Test_aD_BFu8c_BFu0ll, "aD_BFu8c_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8c_BFu0s()
{
  {
    init_simple_test("aD_BFu8c_BFu0s");
    static aD_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8c_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu8c_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu8c_BFu0s(Test_aD_BFu8c_BFu0s, "aD_BFu8c_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8i_BFu0c()
{
  {
    init_simple_test("aD_BFu8i_BFu0c");
    static aD_BFu8i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu8i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu8i_BFu0c(Test_aD_BFu8i_BFu0c, "aD_BFu8i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8i_BFu0i()
{
  {
    init_simple_test("aD_BFu8i_BFu0i");
    static aD_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu8i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu8i_BFu0i(Test_aD_BFu8i_BFu0i, "aD_BFu8i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8i_BFu0ll()
{
  {
    init_simple_test("aD_BFu8i_BFu0ll");
    static aD_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu8i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu8i_BFu0ll(Test_aD_BFu8i_BFu0ll, "aD_BFu8i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8i_BFu0s()
{
  {
    init_simple_test("aD_BFu8i_BFu0s");
    static aD_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu8i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu8i_BFu0s(Test_aD_BFu8i_BFu0s, "aD_BFu8i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8ll_BFu0c()
{
  {
    init_simple_test("aD_BFu8ll_BFu0c");
    static aD_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu8ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu8ll_BFu0c(Test_aD_BFu8ll_BFu0c, "aD_BFu8ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8ll_BFu0i()
{
  {
    init_simple_test("aD_BFu8ll_BFu0i");
    static aD_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu8ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu8ll_BFu0i(Test_aD_BFu8ll_BFu0i, "aD_BFu8ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu8ll_BFu0ll");
    static aD_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu8ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu8ll_BFu0ll(Test_aD_BFu8ll_BFu0ll, "aD_BFu8ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8ll_BFu0s()
{
  {
    init_simple_test("aD_BFu8ll_BFu0s");
    static aD_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu8ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu8ll_BFu0s(Test_aD_BFu8ll_BFu0s, "aD_BFu8ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8s_BFu0c()
{
  {
    init_simple_test("aD_BFu8s_BFu0c");
    static aD_BFu8s_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu8s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu8s_BFu0c(Test_aD_BFu8s_BFu0c, "aD_BFu8s_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8s_BFu0i()
{
  {
    init_simple_test("aD_BFu8s_BFu0i");
    static aD_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu8s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu8s_BFu0i(Test_aD_BFu8s_BFu0i, "aD_BFu8s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8s_BFu0ll()
{
  {
    init_simple_test("aD_BFu8s_BFu0ll");
    static aD_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu8s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu8s_BFu0ll(Test_aD_BFu8s_BFu0ll, "aD_BFu8s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu8s_BFu0s()
{
  {
    init_simple_test("aD_BFu8s_BFu0s");
    static aD_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu8s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu8s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aD_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aD_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu8s_BFu0s(Test_aD_BFu8s_BFu0s, "aD_BFu8s_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9i_BFu0c()
{
  {
    init_simple_test("aD_BFu9i_BFu0c");
    static aD_BFu9i_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9i_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu9i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu9i_BFu0c(Test_aD_BFu9i_BFu0c, "aD_BFu9i_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9i_BFu0i()
{
  {
    init_simple_test("aD_BFu9i_BFu0i");
    static aD_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9i_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu9i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu9i_BFu0i(Test_aD_BFu9i_BFu0i, "aD_BFu9i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9i_BFu0ll()
{
  {
    init_simple_test("aD_BFu9i_BFu0ll");
    static aD_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu9i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu9i_BFu0ll(Test_aD_BFu9i_BFu0ll, "aD_BFu9i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9i_BFu0s()
{
  {
    init_simple_test("aD_BFu9i_BFu0s");
    static aD_BFu9i_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9i_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu9i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu9i_BFu0s(Test_aD_BFu9i_BFu0s, "aD_BFu9i_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9ll_BFu0c()
{
  {
    init_simple_test("aD_BFu9ll_BFu0c");
    static aD_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu9ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu9ll_BFu0c(Test_aD_BFu9ll_BFu0c, "aD_BFu9ll_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9ll_BFu0i()
{
  {
    init_simple_test("aD_BFu9ll_BFu0i");
    static aD_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu9ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu9ll_BFu0i(Test_aD_BFu9ll_BFu0i, "aD_BFu9ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aD_BFu9ll_BFu0ll");
    static aD_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu9ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu9ll_BFu0ll(Test_aD_BFu9ll_BFu0ll, "aD_BFu9ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9ll_BFu0s()
{
  {
    init_simple_test("aD_BFu9ll_BFu0s");
    static aD_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu9ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu9ll_BFu0s(Test_aD_BFu9ll_BFu0s, "aD_BFu9ll_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9s_BFu0c()
{
  {
    init_simple_test("aD_BFu9s_BFu0c");
    static aD_BFu9s_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9s_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_BFu9s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaD_BFu9s_BFu0c(Test_aD_BFu9s_BFu0c, "aD_BFu9s_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9s_BFu0i()
{
  {
    init_simple_test("aD_BFu9s_BFu0i");
    static aD_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9s_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_BFu9s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaD_BFu9s_BFu0i(Test_aD_BFu9s_BFu0i, "aD_BFu9s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9s_BFu0ll()
{
  {
    init_simple_test("aD_BFu9s_BFu0ll");
    static aD_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_BFu9s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaD_BFu9s_BFu0ll(Test_aD_BFu9s_BFu0ll, "aD_BFu9s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_BFu9s_BFu0s()
{
  {
    init_simple_test("aD_BFu9s_BFu0s");
    static aD_BFu9s_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_BFu9s_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_BFu9s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aD_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aD_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaD_BFu9s_BFu0s(Test_aD_BFu9s_BFu0s, "aD_BFu9s_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_C_BFu0c()
{
  {
    init_simple_test("aD_C_BFu0c");
    static aD_C_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_C_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_C_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_C_BFu0c(Test_aD_C_BFu0c, "aD_C_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_C_BFu0i()
{
  {
    init_simple_test("aD_C_BFu0i");
    static aD_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_C_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_C_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_C_BFu0i(Test_aD_C_BFu0i, "aD_C_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_C_BFu0ll()
{
  {
    init_simple_test("aD_C_BFu0ll");
    static aD_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_C_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_C_BFu0ll(Test_aD_C_BFu0ll, "aD_C_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_C_BFu0s()
{
  {
    init_simple_test("aD_C_BFu0s");
    static aD_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_C_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_C_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_C_BFu0s(Test_aD_C_BFu0s, "aD_C_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_D_BFu0c()
{
  {
    init_simple_test("aD_D_BFu0c");
    static aD_D_BFu0c lv;
    check2(sizeof(lv), 16, "sizeof(aD_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_D_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_D_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_D_BFu0c(Test_aD_D_BFu0c, "aD_D_BFu0c", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_D_BFu0i()
{
  {
    init_simple_test("aD_D_BFu0i");
    static aD_D_BFu0i lv;
    check2(sizeof(lv), 16, "sizeof(aD_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_D_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_D_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_D_BFu0i(Test_aD_D_BFu0i, "aD_D_BFu0i", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_D_BFu0ll()
{
  {
    init_simple_test("aD_D_BFu0ll");
    static aD_D_BFu0ll lv;
    check2(sizeof(lv), 16, "sizeof(aD_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_D_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_D_BFu0ll(Test_aD_D_BFu0ll, "aD_D_BFu0ll", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_D_BFu0s()
{
  {
    init_simple_test("aD_D_BFu0s");
    static aD_D_BFu0s lv;
    check2(sizeof(lv), 16, "sizeof(aD_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_D_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_D_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_D_BFu0s(Test_aD_D_BFu0s, "aD_D_BFu0s", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_F_BFu0c()
{
  {
    init_simple_test("aD_F_BFu0c");
    static aD_F_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_F_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_F_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_F_BFu0c(Test_aD_F_BFu0c, "aD_F_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_F_BFu0i()
{
  {
    init_simple_test("aD_F_BFu0i");
    static aD_F_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_F_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_F_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_F_BFu0i(Test_aD_F_BFu0i, "aD_F_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_F_BFu0ll()
{
  {
    init_simple_test("aD_F_BFu0ll");
    static aD_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_F_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_F_BFu0ll(Test_aD_F_BFu0ll, "aD_F_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_F_BFu0s()
{
  {
    init_simple_test("aD_F_BFu0s");
    static aD_F_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_F_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_F_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_F_BFu0s(Test_aD_F_BFu0s, "aD_F_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_I_BFu0c()
{
  {
    init_simple_test("aD_I_BFu0c");
    static aD_I_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_I_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_I_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_I_BFu0c(Test_aD_I_BFu0c, "aD_I_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_I_BFu0i()
{
  {
    init_simple_test("aD_I_BFu0i");
    static aD_I_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_I_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_I_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_I_BFu0i(Test_aD_I_BFu0i, "aD_I_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_I_BFu0ll()
{
  {
    init_simple_test("aD_I_BFu0ll");
    static aD_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_I_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_I_BFu0ll(Test_aD_I_BFu0ll, "aD_I_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_I_BFu0s()
{
  {
    init_simple_test("aD_I_BFu0s");
    static aD_I_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_I_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_I_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_I_BFu0s(Test_aD_I_BFu0s, "aD_I_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ip_BFu0c()
{
  {
    init_simple_test("aD_Ip_BFu0c");
    static aD_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Ip_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Ip_BFu0c(Test_aD_Ip_BFu0c, "aD_Ip_BFu0c", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ip_BFu0i()
{
  {
    init_simple_test("aD_Ip_BFu0i");
    static aD_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Ip_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Ip_BFu0i(Test_aD_Ip_BFu0i, "aD_Ip_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ip_BFu0ll()
{
  {
    init_simple_test("aD_Ip_BFu0ll");
    static aD_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Ip_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Ip_BFu0ll(Test_aD_Ip_BFu0ll, "aD_Ip_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ip_BFu0s()
{
  {
    init_simple_test("aD_Ip_BFu0s");
    static aD_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Ip_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Ip_BFu0s(Test_aD_Ip_BFu0s, "aD_Ip_BFu0s", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_L_BFu0c()
{
  {
    init_simple_test("aD_L_BFu0c");
    static aD_L_BFu0c lv;
    check2(sizeof(lv), 16, "sizeof(aD_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_L_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_L_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_L_BFu0c(Test_aD_L_BFu0c, "aD_L_BFu0c", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_L_BFu0i()
{
  {
    init_simple_test("aD_L_BFu0i");
    static aD_L_BFu0i lv;
    check2(sizeof(lv), 16, "sizeof(aD_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_L_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_L_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_L_BFu0i(Test_aD_L_BFu0i, "aD_L_BFu0i", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_L_BFu0ll()
{
  {
    init_simple_test("aD_L_BFu0ll");
    static aD_L_BFu0ll lv;
    check2(sizeof(lv), 16, "sizeof(aD_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_L_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_L_BFu0ll(Test_aD_L_BFu0ll, "aD_L_BFu0ll", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_L_BFu0s()
{
  {
    init_simple_test("aD_L_BFu0s");
    static aD_L_BFu0s lv;
    check2(sizeof(lv), 16, "sizeof(aD_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_L_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_L_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_L_BFu0s(Test_aD_L_BFu0s, "aD_L_BFu0s", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_S_BFu0c()
{
  {
    init_simple_test("aD_S_BFu0c");
    static aD_S_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_S_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_S_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_S_BFu0c(Test_aD_S_BFu0c, "aD_S_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_S_BFu0i()
{
  {
    init_simple_test("aD_S_BFu0i");
    static aD_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_S_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_S_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_S_BFu0i(Test_aD_S_BFu0i, "aD_S_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_S_BFu0ll()
{
  {
    init_simple_test("aD_S_BFu0ll");
    static aD_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_S_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_S_BFu0ll(Test_aD_S_BFu0ll, "aD_S_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_S_BFu0s()
{
  {
    init_simple_test("aD_S_BFu0s");
    static aD_S_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_S_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_S_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_S_BFu0s(Test_aD_S_BFu0s, "aD_S_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Uc_BFu0c()
{
  {
    init_simple_test("aD_Uc_BFu0c");
    static aD_Uc_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aD_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Uc_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Uc_BFu0c(Test_aD_Uc_BFu0c, "aD_Uc_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Uc_BFu0i()
{
  {
    init_simple_test("aD_Uc_BFu0i");
    static aD_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Uc_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Uc_BFu0i(Test_aD_Uc_BFu0i, "aD_Uc_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Uc_BFu0ll()
{
  {
    init_simple_test("aD_Uc_BFu0ll");
    static aD_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Uc_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Uc_BFu0ll(Test_aD_Uc_BFu0ll, "aD_Uc_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Uc_BFu0s()
{
  {
    init_simple_test("aD_Uc_BFu0s");
    static aD_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aD_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Uc_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Uc_BFu0s(Test_aD_Uc_BFu0s, "aD_Uc_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ui_BFu0c()
{
  {
    init_simple_test("aD_Ui_BFu0c");
    static aD_Ui_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aD_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Ui_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Ui_BFu0c(Test_aD_Ui_BFu0c, "aD_Ui_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ui_BFu0i()
{
  {
    init_simple_test("aD_Ui_BFu0i");
    static aD_Ui_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aD_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Ui_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Ui_BFu0i(Test_aD_Ui_BFu0i, "aD_Ui_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ui_BFu0ll()
{
  {
    init_simple_test("aD_Ui_BFu0ll");
    static aD_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Ui_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Ui_BFu0ll(Test_aD_Ui_BFu0ll, "aD_Ui_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ui_BFu0s()
{
  {
    init_simple_test("aD_Ui_BFu0s");
    static aD_Ui_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aD_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Ui_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Ui_BFu0s(Test_aD_Ui_BFu0s, "aD_Ui_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ul_BFu0c()
{
  {
    init_simple_test("aD_Ul_BFu0c");
    static aD_Ul_BFu0c lv;
    check2(sizeof(lv), 16, "sizeof(aD_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Ul_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Ul_BFu0c(Test_aD_Ul_BFu0c, "aD_Ul_BFu0c", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ul_BFu0i()
{
  {
    init_simple_test("aD_Ul_BFu0i");
    static aD_Ul_BFu0i lv;
    check2(sizeof(lv), 16, "sizeof(aD_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Ul_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Ul_BFu0i(Test_aD_Ul_BFu0i, "aD_Ul_BFu0i", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ul_BFu0ll()
{
  {
    init_simple_test("aD_Ul_BFu0ll");
    static aD_Ul_BFu0ll lv;
    check2(sizeof(lv), 16, "sizeof(aD_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Ul_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Ul_BFu0ll(Test_aD_Ul_BFu0ll, "aD_Ul_BFu0ll", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Ul_BFu0s()
{
  {
    init_simple_test("aD_Ul_BFu0s");
    static aD_Ul_BFu0s lv;
    check2(sizeof(lv), 16, "sizeof(aD_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Ul_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Ul_BFu0s(Test_aD_Ul_BFu0s, "aD_Ul_BFu0s", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Us_BFu0c()
{
  {
    init_simple_test("aD_Us_BFu0c");
    static aD_Us_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aD_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Us_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Us_BFu0c(Test_aD_Us_BFu0c, "aD_Us_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Us_BFu0i()
{
  {
    init_simple_test("aD_Us_BFu0i");
    static aD_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aD_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Us_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Us_BFu0i(Test_aD_Us_BFu0i, "aD_Us_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Us_BFu0ll()
{
  {
    init_simple_test("aD_Us_BFu0ll");
    static aD_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Us_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Us_BFu0ll(Test_aD_Us_BFu0ll, "aD_Us_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Us_BFu0s()
{
  {
    init_simple_test("aD_Us_BFu0s");
    static aD_Us_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aD_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Us_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Us_BFu0s(Test_aD_Us_BFu0s, "aD_Us_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Vp_BFu0c()
{
  {
    init_simple_test("aD_Vp_BFu0c");
    static aD_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "aD_Vp_BFu0c.v1");
    check_field_offset(lv, v2, 8, "aD_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaD_Vp_BFu0c(Test_aD_Vp_BFu0c, "aD_Vp_BFu0c", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Vp_BFu0i()
{
  {
    init_simple_test("aD_Vp_BFu0i");
    static aD_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "aD_Vp_BFu0i.v1");
    check_field_offset(lv, v2, 8, "aD_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaD_Vp_BFu0i(Test_aD_Vp_BFu0i, "aD_Vp_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Vp_BFu0ll()
{
  {
    init_simple_test("aD_Vp_BFu0ll");
    static aD_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aD_Vp_BFu0ll.v1");
    check_field_offset(lv, v2, 8, "aD_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaD_Vp_BFu0ll(Test_aD_Vp_BFu0ll, "aD_Vp_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aD_Vp_BFu0s()
{
  {
    init_simple_test("aD_Vp_BFu0s");
    static aD_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aD_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aD_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "aD_Vp_BFu0s.v1");
    check_field_offset(lv, v2, 8, "aD_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaD_Vp_BFu0s(Test_aD_Vp_BFu0s, "aD_Vp_BFu0s", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c()
{
  {
    init_simple_test("aF_BFu0c");
    static aF_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0c(Test_aF_BFu0c, "aF_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu0c()
{
  {
    init_simple_test("aF_BFu0c_BFu0c");
    static aF_BFu0c_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu0c(Test_aF_BFu0c_BFu0c, "aF_BFu0c_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu0i()
{
  {
    init_simple_test("aF_BFu0c_BFu0i");
    static aF_BFu0c_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu0i(Test_aF_BFu0c_BFu0i, "aF_BFu0c_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu0ll()
{
  {
    init_simple_test("aF_BFu0c_BFu0ll");
    static aF_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu0ll(Test_aF_BFu0c_BFu0ll, "aF_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu0s()
{
  {
    init_simple_test("aF_BFu0c_BFu0s");
    static aF_BFu0c_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu0s(Test_aF_BFu0c_BFu0s, "aF_BFu0c_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu15i()
{
  {
    init_simple_test("aF_BFu0c_BFu15i");
    static aF_BFu0c_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu15i(Test_aF_BFu0c_BFu15i, "aF_BFu0c_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu15ll()
{
  {
    init_simple_test("aF_BFu0c_BFu15ll");
    static aF_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu15ll(Test_aF_BFu0c_BFu15ll, "aF_BFu0c_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu15s()
{
  {
    init_simple_test("aF_BFu0c_BFu15s");
    static aF_BFu0c_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu15s(Test_aF_BFu0c_BFu15s, "aF_BFu0c_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu16i()
{
  {
    init_simple_test("aF_BFu0c_BFu16i");
    static aF_BFu0c_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu16i(Test_aF_BFu0c_BFu16i, "aF_BFu0c_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu16ll()
{
  {
    init_simple_test("aF_BFu0c_BFu16ll");
    static aF_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu16ll(Test_aF_BFu0c_BFu16ll, "aF_BFu0c_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu16s()
{
  {
    init_simple_test("aF_BFu0c_BFu16s");
    static aF_BFu0c_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu16s(Test_aF_BFu0c_BFu16s, "aF_BFu0c_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu17i()
{
  {
    init_simple_test("aF_BFu0c_BFu17i");
    static aF_BFu0c_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu17i(Test_aF_BFu0c_BFu17i, "aF_BFu0c_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu17ll()
{
  {
    init_simple_test("aF_BFu0c_BFu17ll");
    static aF_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu17ll(Test_aF_BFu0c_BFu17ll, "aF_BFu0c_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu1c()
{
  {
    init_simple_test("aF_BFu0c_BFu1c");
    static aF_BFu0c_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu1c(Test_aF_BFu0c_BFu1c, "aF_BFu0c_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu1i()
{
  {
    init_simple_test("aF_BFu0c_BFu1i");
    static aF_BFu0c_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu1i(Test_aF_BFu0c_BFu1i, "aF_BFu0c_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu1ll()
{
  {
    init_simple_test("aF_BFu0c_BFu1ll");
    static aF_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu1ll(Test_aF_BFu0c_BFu1ll, "aF_BFu0c_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu1s()
{
  {
    init_simple_test("aF_BFu0c_BFu1s");
    static aF_BFu0c_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu1s(Test_aF_BFu0c_BFu1s, "aF_BFu0c_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu31i()
{
  {
    init_simple_test("aF_BFu0c_BFu31i");
    static aF_BFu0c_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu31i(Test_aF_BFu0c_BFu31i, "aF_BFu0c_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu31ll()
{
  {
    init_simple_test("aF_BFu0c_BFu31ll");
    static aF_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu31ll(Test_aF_BFu0c_BFu31ll, "aF_BFu0c_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu32i()
{
  {
    init_simple_test("aF_BFu0c_BFu32i");
    static aF_BFu0c_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu32i(Test_aF_BFu0c_BFu32i, "aF_BFu0c_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu32ll()
{
  {
    init_simple_test("aF_BFu0c_BFu32ll");
    static aF_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu32ll(Test_aF_BFu0c_BFu32ll, "aF_BFu0c_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu33()
{
  {
    init_simple_test("aF_BFu0c_BFu33");
    static aF_BFu0c_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aF_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu33(Test_aF_BFu0c_BFu33, "aF_BFu0c_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu7c()
{
  {
    init_simple_test("aF_BFu0c_BFu7c");
    static aF_BFu0c_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu7c(Test_aF_BFu0c_BFu7c, "aF_BFu0c_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu7i()
{
  {
    init_simple_test("aF_BFu0c_BFu7i");
    static aF_BFu0c_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu7i(Test_aF_BFu0c_BFu7i, "aF_BFu0c_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu7ll()
{
  {
    init_simple_test("aF_BFu0c_BFu7ll");
    static aF_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu7ll(Test_aF_BFu0c_BFu7ll, "aF_BFu0c_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu7s()
{
  {
    init_simple_test("aF_BFu0c_BFu7s");
    static aF_BFu0c_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu7s(Test_aF_BFu0c_BFu7s, "aF_BFu0c_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu8c()
{
  {
    init_simple_test("aF_BFu0c_BFu8c");
    static aF_BFu0c_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu8c(Test_aF_BFu0c_BFu8c, "aF_BFu0c_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu8i()
{
  {
    init_simple_test("aF_BFu0c_BFu8i");
    static aF_BFu0c_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu8i(Test_aF_BFu0c_BFu8i, "aF_BFu0c_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu8ll()
{
  {
    init_simple_test("aF_BFu0c_BFu8ll");
    static aF_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu8ll(Test_aF_BFu0c_BFu8ll, "aF_BFu0c_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu8s()
{
  {
    init_simple_test("aF_BFu0c_BFu8s");
    static aF_BFu0c_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu8s(Test_aF_BFu0c_BFu8s, "aF_BFu0c_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu9i()
{
  {
    init_simple_test("aF_BFu0c_BFu9i");
    static aF_BFu0c_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu9i(Test_aF_BFu0c_BFu9i, "aF_BFu0c_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu9ll()
{
  {
    init_simple_test("aF_BFu0c_BFu9ll");
    static aF_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu9ll(Test_aF_BFu0c_BFu9ll, "aF_BFu0c_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_BFu9s()
{
  {
    init_simple_test("aF_BFu0c_BFu9s");
    static aF_BFu0c_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_BFu9s(Test_aF_BFu0c_BFu9s, "aF_BFu0c_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_C()
{
  {
    init_simple_test("aF_BFu0c_C");
    static aF_BFu0c_C lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_C.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_C(Test_aF_BFu0c_C, "aF_BFu0c_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_D()
{
  {
    init_simple_test("aF_BFu0c_D");
    static aF_BFu0c_D lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_D.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_D(Test_aF_BFu0c_D, "aF_BFu0c_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_F()
{
  {
    init_simple_test("aF_BFu0c_F");
    static aF_BFu0c_F lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_F.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_F(Test_aF_BFu0c_F, "aF_BFu0c_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_I()
{
  {
    init_simple_test("aF_BFu0c_I");
    static aF_BFu0c_I lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_I.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_I(Test_aF_BFu0c_I, "aF_BFu0c_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Ip()
{
  {
    init_simple_test("aF_BFu0c_Ip");
    static aF_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Ip.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Ip(Test_aF_BFu0c_Ip, "aF_BFu0c_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_L()
{
  {
    init_simple_test("aF_BFu0c_L");
    static aF_BFu0c_L lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_L.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_L(Test_aF_BFu0c_L, "aF_BFu0c_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_S()
{
  {
    init_simple_test("aF_BFu0c_S");
    static aF_BFu0c_S lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_S.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_S(Test_aF_BFu0c_S, "aF_BFu0c_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Uc()
{
  {
    init_simple_test("aF_BFu0c_Uc");
    static aF_BFu0c_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Uc.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Uc(Test_aF_BFu0c_Uc, "aF_BFu0c_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Ui()
{
  {
    init_simple_test("aF_BFu0c_Ui");
    static aF_BFu0c_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Ui.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Ui(Test_aF_BFu0c_Ui, "aF_BFu0c_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Ul()
{
  {
    init_simple_test("aF_BFu0c_Ul");
    static aF_BFu0c_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Ul.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Ul(Test_aF_BFu0c_Ul, "aF_BFu0c_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Us()
{
  {
    init_simple_test("aF_BFu0c_Us");
    static aF_BFu0c_Us lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Us.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Us(Test_aF_BFu0c_Us, "aF_BFu0c_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0c_Vp()
{
  {
    init_simple_test("aF_BFu0c_Vp");
    static aF_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aF_BFu0c_Vp.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0c_Vp(Test_aF_BFu0c_Vp, "aF_BFu0c_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i()
{
  {
    init_simple_test("aF_BFu0i");
    static aF_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0i(Test_aF_BFu0i, "aF_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu0c()
{
  {
    init_simple_test("aF_BFu0i_BFu0c");
    static aF_BFu0i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu0c(Test_aF_BFu0i_BFu0c, "aF_BFu0i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu0i()
{
  {
    init_simple_test("aF_BFu0i_BFu0i");
    static aF_BFu0i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu0i(Test_aF_BFu0i_BFu0i, "aF_BFu0i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu0ll()
{
  {
    init_simple_test("aF_BFu0i_BFu0ll");
    static aF_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu0ll(Test_aF_BFu0i_BFu0ll, "aF_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu0s()
{
  {
    init_simple_test("aF_BFu0i_BFu0s");
    static aF_BFu0i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu0s(Test_aF_BFu0i_BFu0s, "aF_BFu0i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu15i()
{
  {
    init_simple_test("aF_BFu0i_BFu15i");
    static aF_BFu0i_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu15i(Test_aF_BFu0i_BFu15i, "aF_BFu0i_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu15ll()
{
  {
    init_simple_test("aF_BFu0i_BFu15ll");
    static aF_BFu0i_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu15ll(Test_aF_BFu0i_BFu15ll, "aF_BFu0i_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu15s()
{
  {
    init_simple_test("aF_BFu0i_BFu15s");
    static aF_BFu0i_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu15s(Test_aF_BFu0i_BFu15s, "aF_BFu0i_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu16i()
{
  {
    init_simple_test("aF_BFu0i_BFu16i");
    static aF_BFu0i_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu16i(Test_aF_BFu0i_BFu16i, "aF_BFu0i_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu16ll()
{
  {
    init_simple_test("aF_BFu0i_BFu16ll");
    static aF_BFu0i_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu16ll(Test_aF_BFu0i_BFu16ll, "aF_BFu0i_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu16s()
{
  {
    init_simple_test("aF_BFu0i_BFu16s");
    static aF_BFu0i_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu16s(Test_aF_BFu0i_BFu16s, "aF_BFu0i_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu17i()
{
  {
    init_simple_test("aF_BFu0i_BFu17i");
    static aF_BFu0i_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu17i(Test_aF_BFu0i_BFu17i, "aF_BFu0i_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu17ll()
{
  {
    init_simple_test("aF_BFu0i_BFu17ll");
    static aF_BFu0i_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu17ll(Test_aF_BFu0i_BFu17ll, "aF_BFu0i_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu1c()
{
  {
    init_simple_test("aF_BFu0i_BFu1c");
    static aF_BFu0i_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu1c(Test_aF_BFu0i_BFu1c, "aF_BFu0i_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu1i()
{
  {
    init_simple_test("aF_BFu0i_BFu1i");
    static aF_BFu0i_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu1i(Test_aF_BFu0i_BFu1i, "aF_BFu0i_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu1ll()
{
  {
    init_simple_test("aF_BFu0i_BFu1ll");
    static aF_BFu0i_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu1ll(Test_aF_BFu0i_BFu1ll, "aF_BFu0i_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu1s()
{
  {
    init_simple_test("aF_BFu0i_BFu1s");
    static aF_BFu0i_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu1s(Test_aF_BFu0i_BFu1s, "aF_BFu0i_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu31i()
{
  {
    init_simple_test("aF_BFu0i_BFu31i");
    static aF_BFu0i_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu31i(Test_aF_BFu0i_BFu31i, "aF_BFu0i_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu31ll()
{
  {
    init_simple_test("aF_BFu0i_BFu31ll");
    static aF_BFu0i_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu31ll(Test_aF_BFu0i_BFu31ll, "aF_BFu0i_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu32i()
{
  {
    init_simple_test("aF_BFu0i_BFu32i");
    static aF_BFu0i_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu32i(Test_aF_BFu0i_BFu32i, "aF_BFu0i_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu32ll()
{
  {
    init_simple_test("aF_BFu0i_BFu32ll");
    static aF_BFu0i_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu32ll(Test_aF_BFu0i_BFu32ll, "aF_BFu0i_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu33()
{
  {
    init_simple_test("aF_BFu0i_BFu33");
    static aF_BFu0i_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aF_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu0i_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu33(Test_aF_BFu0i_BFu33, "aF_BFu0i_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu7c()
{
  {
    init_simple_test("aF_BFu0i_BFu7c");
    static aF_BFu0i_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu7c(Test_aF_BFu0i_BFu7c, "aF_BFu0i_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu7i()
{
  {
    init_simple_test("aF_BFu0i_BFu7i");
    static aF_BFu0i_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu7i(Test_aF_BFu0i_BFu7i, "aF_BFu0i_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu7ll()
{
  {
    init_simple_test("aF_BFu0i_BFu7ll");
    static aF_BFu0i_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu7ll(Test_aF_BFu0i_BFu7ll, "aF_BFu0i_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu7s()
{
  {
    init_simple_test("aF_BFu0i_BFu7s");
    static aF_BFu0i_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu7s(Test_aF_BFu0i_BFu7s, "aF_BFu0i_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu8c()
{
  {
    init_simple_test("aF_BFu0i_BFu8c");
    static aF_BFu0i_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu8c(Test_aF_BFu0i_BFu8c, "aF_BFu0i_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu8i()
{
  {
    init_simple_test("aF_BFu0i_BFu8i");
    static aF_BFu0i_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu8i(Test_aF_BFu0i_BFu8i, "aF_BFu0i_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu8ll()
{
  {
    init_simple_test("aF_BFu0i_BFu8ll");
    static aF_BFu0i_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu8ll(Test_aF_BFu0i_BFu8ll, "aF_BFu0i_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu8s()
{
  {
    init_simple_test("aF_BFu0i_BFu8s");
    static aF_BFu0i_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu8s(Test_aF_BFu0i_BFu8s, "aF_BFu0i_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu9i()
{
  {
    init_simple_test("aF_BFu0i_BFu9i");
    static aF_BFu0i_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu9i(Test_aF_BFu0i_BFu9i, "aF_BFu0i_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu9ll()
{
  {
    init_simple_test("aF_BFu0i_BFu9ll");
    static aF_BFu0i_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu9ll(Test_aF_BFu0i_BFu9ll, "aF_BFu0i_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_BFu9s()
{
  {
    init_simple_test("aF_BFu0i_BFu9s");
    static aF_BFu0i_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_BFu9s(Test_aF_BFu0i_BFu9s, "aF_BFu0i_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_C()
{
  {
    init_simple_test("aF_BFu0i_C");
    static aF_BFu0i_C lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_C.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_C(Test_aF_BFu0i_C, "aF_BFu0i_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_D()
{
  {
    init_simple_test("aF_BFu0i_D");
    static aF_BFu0i_D lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_D.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_D(Test_aF_BFu0i_D, "aF_BFu0i_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_F()
{
  {
    init_simple_test("aF_BFu0i_F");
    static aF_BFu0i_F lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_F.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_F(Test_aF_BFu0i_F, "aF_BFu0i_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_I()
{
  {
    init_simple_test("aF_BFu0i_I");
    static aF_BFu0i_I lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_I.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_I(Test_aF_BFu0i_I, "aF_BFu0i_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Ip()
{
  {
    init_simple_test("aF_BFu0i_Ip");
    static aF_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Ip.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Ip(Test_aF_BFu0i_Ip, "aF_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_L()
{
  {
    init_simple_test("aF_BFu0i_L");
    static aF_BFu0i_L lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_L.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_L(Test_aF_BFu0i_L, "aF_BFu0i_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_S()
{
  {
    init_simple_test("aF_BFu0i_S");
    static aF_BFu0i_S lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_S.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_S(Test_aF_BFu0i_S, "aF_BFu0i_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Uc()
{
  {
    init_simple_test("aF_BFu0i_Uc");
    static aF_BFu0i_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Uc.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Uc(Test_aF_BFu0i_Uc, "aF_BFu0i_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Ui()
{
  {
    init_simple_test("aF_BFu0i_Ui");
    static aF_BFu0i_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Ui.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Ui(Test_aF_BFu0i_Ui, "aF_BFu0i_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Ul()
{
  {
    init_simple_test("aF_BFu0i_Ul");
    static aF_BFu0i_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Ul.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Ul(Test_aF_BFu0i_Ul, "aF_BFu0i_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Us()
{
  {
    init_simple_test("aF_BFu0i_Us");
    static aF_BFu0i_Us lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Us.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Us(Test_aF_BFu0i_Us, "aF_BFu0i_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0i_Vp()
{
  {
    init_simple_test("aF_BFu0i_Vp");
    static aF_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aF_BFu0i_Vp.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0i_Vp(Test_aF_BFu0i_Vp, "aF_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll()
{
  {
    init_simple_test("aF_BFu0ll");
    static aF_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll(Test_aF_BFu0ll, "aF_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu0c()
{
  {
    init_simple_test("aF_BFu0ll_BFu0c");
    static aF_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu0c(Test_aF_BFu0ll_BFu0c, "aF_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu0i()
{
  {
    init_simple_test("aF_BFu0ll_BFu0i");
    static aF_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu0i(Test_aF_BFu0ll_BFu0i, "aF_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu0ll");
    static aF_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu0ll(Test_aF_BFu0ll_BFu0ll, "aF_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu0s()
{
  {
    init_simple_test("aF_BFu0ll_BFu0s");
    static aF_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu0s(Test_aF_BFu0ll_BFu0s, "aF_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu15i()
{
  {
    init_simple_test("aF_BFu0ll_BFu15i");
    static aF_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aF_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aF_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu15i(Test_aF_BFu0ll_BFu15i, "aF_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu15ll");
    static aF_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aF_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aF_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu15ll(Test_aF_BFu0ll_BFu15ll, "aF_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu15s()
{
  {
    init_simple_test("aF_BFu0ll_BFu15s");
    static aF_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aF_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aF_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu15s(Test_aF_BFu0ll_BFu15s, "aF_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu16i()
{
  {
    init_simple_test("aF_BFu0ll_BFu16i");
    static aF_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aF_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aF_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu16i(Test_aF_BFu0ll_BFu16i, "aF_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu16ll");
    static aF_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aF_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aF_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu16ll(Test_aF_BFu0ll_BFu16ll, "aF_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu16s()
{
  {
    init_simple_test("aF_BFu0ll_BFu16s");
    static aF_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aF_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aF_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu16s(Test_aF_BFu0ll_BFu16s, "aF_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu17i()
{
  {
    init_simple_test("aF_BFu0ll_BFu17i");
    static aF_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aF_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aF_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aF_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu17i(Test_aF_BFu0ll_BFu17i, "aF_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu17ll");
    static aF_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aF_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aF_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aF_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu17ll(Test_aF_BFu0ll_BFu17ll, "aF_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu1c()
{
  {
    init_simple_test("aF_BFu0ll_BFu1c");
    static aF_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aF_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu1c(Test_aF_BFu0ll_BFu1c, "aF_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu1i()
{
  {
    init_simple_test("aF_BFu0ll_BFu1i");
    static aF_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aF_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu1i(Test_aF_BFu0ll_BFu1i, "aF_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu1ll");
    static aF_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aF_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu1ll(Test_aF_BFu0ll_BFu1ll, "aF_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu1s()
{
  {
    init_simple_test("aF_BFu0ll_BFu1s");
    static aF_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aF_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu1s(Test_aF_BFu0ll_BFu1s, "aF_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu31i()
{
  {
    init_simple_test("aF_BFu0ll_BFu31i");
    static aF_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aF_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aF_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu31i(Test_aF_BFu0ll_BFu31i, "aF_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu31ll");
    static aF_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aF_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aF_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu31ll(Test_aF_BFu0ll_BFu31ll, "aF_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu32i()
{
  {
    init_simple_test("aF_BFu0ll_BFu32i");
    static aF_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aF_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aF_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu32i(Test_aF_BFu0ll_BFu32i, "aF_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu32ll");
    static aF_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aF_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aF_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu32ll(Test_aF_BFu0ll_BFu32ll, "aF_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu33()
{
  {
    init_simple_test("aF_BFu0ll_BFu33");
    static aF_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aF_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aF_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aF_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu33(Test_aF_BFu0ll_BFu33, "aF_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu7c()
{
  {
    init_simple_test("aF_BFu0ll_BFu7c");
    static aF_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aF_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aF_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu7c(Test_aF_BFu0ll_BFu7c, "aF_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu7i()
{
  {
    init_simple_test("aF_BFu0ll_BFu7i");
    static aF_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aF_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aF_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu7i(Test_aF_BFu0ll_BFu7i, "aF_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu7ll");
    static aF_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aF_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aF_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu7ll(Test_aF_BFu0ll_BFu7ll, "aF_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu7s()
{
  {
    init_simple_test("aF_BFu0ll_BFu7s");
    static aF_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aF_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aF_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu7s(Test_aF_BFu0ll_BFu7s, "aF_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu8c()
{
  {
    init_simple_test("aF_BFu0ll_BFu8c");
    static aF_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aF_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aF_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu8c(Test_aF_BFu0ll_BFu8c, "aF_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu8i()
{
  {
    init_simple_test("aF_BFu0ll_BFu8i");
    static aF_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aF_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aF_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu8i(Test_aF_BFu0ll_BFu8i, "aF_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu8ll");
    static aF_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aF_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aF_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu8ll(Test_aF_BFu0ll_BFu8ll, "aF_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu8s()
{
  {
    init_simple_test("aF_BFu0ll_BFu8s");
    static aF_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aF_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aF_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu8s(Test_aF_BFu0ll_BFu8s, "aF_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu9i()
{
  {
    init_simple_test("aF_BFu0ll_BFu9i");
    static aF_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aF_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aF_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu9i(Test_aF_BFu0ll_BFu9i, "aF_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aF_BFu0ll_BFu9ll");
    static aF_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aF_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aF_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu9ll(Test_aF_BFu0ll_BFu9ll, "aF_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_BFu9s()
{
  {
    init_simple_test("aF_BFu0ll_BFu9s");
    static aF_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aF_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aF_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_BFu9s(Test_aF_BFu0ll_BFu9s, "aF_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_C()
{
  {
    init_simple_test("aF_BFu0ll_C");
    static aF_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_C(Test_aF_BFu0ll_C, "aF_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_D()
{
  {
    init_simple_test("aF_BFu0ll_D");
    static aF_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_D(Test_aF_BFu0ll_D, "aF_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_F()
{
  {
    init_simple_test("aF_BFu0ll_F");
    static aF_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_F(Test_aF_BFu0ll_F, "aF_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_I()
{
  {
    init_simple_test("aF_BFu0ll_I");
    static aF_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_I(Test_aF_BFu0ll_I, "aF_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Ip()
{
  {
    init_simple_test("aF_BFu0ll_Ip");
    static aF_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aF_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Ip(Test_aF_BFu0ll_Ip, "aF_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_L()
{
  {
    init_simple_test("aF_BFu0ll_L");
    static aF_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_L(Test_aF_BFu0ll_L, "aF_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_S()
{
  {
    init_simple_test("aF_BFu0ll_S");
    static aF_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_S(Test_aF_BFu0ll_S, "aF_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Uc()
{
  {
    init_simple_test("aF_BFu0ll_Uc");
    static aF_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aF_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Uc(Test_aF_BFu0ll_Uc, "aF_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Ui()
{
  {
    init_simple_test("aF_BFu0ll_Ui");
    static aF_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Ui(Test_aF_BFu0ll_Ui, "aF_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Ul()
{
  {
    init_simple_test("aF_BFu0ll_Ul");
    static aF_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Ul(Test_aF_BFu0ll_Ul, "aF_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Us()
{
  {
    init_simple_test("aF_BFu0ll_Us");
    static aF_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aF_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Us(Test_aF_BFu0ll_Us, "aF_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0ll_Vp()
{
  {
    init_simple_test("aF_BFu0ll_Vp");
    static aF_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aF_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aF_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aF_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0ll_Vp(Test_aF_BFu0ll_Vp, "aF_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s()
{
  {
    init_simple_test("aF_BFu0s");
    static aF_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0s(Test_aF_BFu0s, "aF_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu0c()
{
  {
    init_simple_test("aF_BFu0s_BFu0c");
    static aF_BFu0s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu0c(Test_aF_BFu0s_BFu0c, "aF_BFu0s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu0i()
{
  {
    init_simple_test("aF_BFu0s_BFu0i");
    static aF_BFu0s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu0i(Test_aF_BFu0s_BFu0i, "aF_BFu0s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu0ll()
{
  {
    init_simple_test("aF_BFu0s_BFu0ll");
    static aF_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aF_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu0ll(Test_aF_BFu0s_BFu0ll, "aF_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu0s()
{
  {
    init_simple_test("aF_BFu0s_BFu0s");
    static aF_BFu0s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aF_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu0s(Test_aF_BFu0s_BFu0s, "aF_BFu0s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu15i()
{
  {
    init_simple_test("aF_BFu0s_BFu15i");
    static aF_BFu0s_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu15i(Test_aF_BFu0s_BFu15i, "aF_BFu0s_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu15ll()
{
  {
    init_simple_test("aF_BFu0s_BFu15ll");
    static aF_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu15ll(Test_aF_BFu0s_BFu15ll, "aF_BFu0s_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu15s()
{
  {
    init_simple_test("aF_BFu0s_BFu15s");
    static aF_BFu0s_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu15s(Test_aF_BFu0s_BFu15s, "aF_BFu0s_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu16i()
{
  {
    init_simple_test("aF_BFu0s_BFu16i");
    static aF_BFu0s_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu16i(Test_aF_BFu0s_BFu16i, "aF_BFu0s_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu16ll()
{
  {
    init_simple_test("aF_BFu0s_BFu16ll");
    static aF_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu16ll(Test_aF_BFu0s_BFu16ll, "aF_BFu0s_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu16s()
{
  {
    init_simple_test("aF_BFu0s_BFu16s");
    static aF_BFu0s_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu16s(Test_aF_BFu0s_BFu16s, "aF_BFu0s_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu17i()
{
  {
    init_simple_test("aF_BFu0s_BFu17i");
    static aF_BFu0s_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu17i(Test_aF_BFu0s_BFu17i, "aF_BFu0s_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu17ll()
{
  {
    init_simple_test("aF_BFu0s_BFu17ll");
    static aF_BFu0s_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu17ll(Test_aF_BFu0s_BFu17ll, "aF_BFu0s_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu1c()
{
  {
    init_simple_test("aF_BFu0s_BFu1c");
    static aF_BFu0s_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu1c(Test_aF_BFu0s_BFu1c, "aF_BFu0s_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu1i()
{
  {
    init_simple_test("aF_BFu0s_BFu1i");
    static aF_BFu0s_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu1i(Test_aF_BFu0s_BFu1i, "aF_BFu0s_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu1ll()
{
  {
    init_simple_test("aF_BFu0s_BFu1ll");
    static aF_BFu0s_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu1ll(Test_aF_BFu0s_BFu1ll, "aF_BFu0s_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu1s()
{
  {
    init_simple_test("aF_BFu0s_BFu1s");
    static aF_BFu0s_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu1s(Test_aF_BFu0s_BFu1s, "aF_BFu0s_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu31i()
{
  {
    init_simple_test("aF_BFu0s_BFu31i");
    static aF_BFu0s_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu31i(Test_aF_BFu0s_BFu31i, "aF_BFu0s_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu31ll()
{
  {
    init_simple_test("aF_BFu0s_BFu31ll");
    static aF_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu31ll(Test_aF_BFu0s_BFu31ll, "aF_BFu0s_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu32i()
{
  {
    init_simple_test("aF_BFu0s_BFu32i");
    static aF_BFu0s_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu32i(Test_aF_BFu0s_BFu32i, "aF_BFu0s_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu32ll()
{
  {
    init_simple_test("aF_BFu0s_BFu32ll");
    static aF_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu32ll(Test_aF_BFu0s_BFu32ll, "aF_BFu0s_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu33()
{
  {
    init_simple_test("aF_BFu0s_BFu33");
    static aF_BFu0s_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aF_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu33(Test_aF_BFu0s_BFu33, "aF_BFu0s_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu7c()
{
  {
    init_simple_test("aF_BFu0s_BFu7c");
    static aF_BFu0s_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu7c(Test_aF_BFu0s_BFu7c, "aF_BFu0s_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu7i()
{
  {
    init_simple_test("aF_BFu0s_BFu7i");
    static aF_BFu0s_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu7i(Test_aF_BFu0s_BFu7i, "aF_BFu0s_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu7ll()
{
  {
    init_simple_test("aF_BFu0s_BFu7ll");
    static aF_BFu0s_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu7ll(Test_aF_BFu0s_BFu7ll, "aF_BFu0s_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu7s()
{
  {
    init_simple_test("aF_BFu0s_BFu7s");
    static aF_BFu0s_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu7s(Test_aF_BFu0s_BFu7s, "aF_BFu0s_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu8c()
{
  {
    init_simple_test("aF_BFu0s_BFu8c");
    static aF_BFu0s_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu8c(Test_aF_BFu0s_BFu8c, "aF_BFu0s_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu8i()
{
  {
    init_simple_test("aF_BFu0s_BFu8i");
    static aF_BFu0s_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu8i(Test_aF_BFu0s_BFu8i, "aF_BFu0s_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu8ll()
{
  {
    init_simple_test("aF_BFu0s_BFu8ll");
    static aF_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu8ll(Test_aF_BFu0s_BFu8ll, "aF_BFu0s_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu8s()
{
  {
    init_simple_test("aF_BFu0s_BFu8s");
    static aF_BFu0s_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu8s(Test_aF_BFu0s_BFu8s, "aF_BFu0s_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu9i()
{
  {
    init_simple_test("aF_BFu0s_BFu9i");
    static aF_BFu0s_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu9i(Test_aF_BFu0s_BFu9i, "aF_BFu0s_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu9ll()
{
  {
    init_simple_test("aF_BFu0s_BFu9ll");
    static aF_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu9ll(Test_aF_BFu0s_BFu9ll, "aF_BFu0s_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_BFu9s()
{
  {
    init_simple_test("aF_BFu0s_BFu9s");
    static aF_BFu0s_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_BFu9s(Test_aF_BFu0s_BFu9s, "aF_BFu0s_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_C()
{
  {
    init_simple_test("aF_BFu0s_C");
    static aF_BFu0s_C lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_C.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_C(Test_aF_BFu0s_C, "aF_BFu0s_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_D()
{
  {
    init_simple_test("aF_BFu0s_D");
    static aF_BFu0s_D lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_D.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_D(Test_aF_BFu0s_D, "aF_BFu0s_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_F()
{
  {
    init_simple_test("aF_BFu0s_F");
    static aF_BFu0s_F lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_F.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_F(Test_aF_BFu0s_F, "aF_BFu0s_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_I()
{
  {
    init_simple_test("aF_BFu0s_I");
    static aF_BFu0s_I lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_I.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_I(Test_aF_BFu0s_I, "aF_BFu0s_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Ip()
{
  {
    init_simple_test("aF_BFu0s_Ip");
    static aF_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Ip.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Ip(Test_aF_BFu0s_Ip, "aF_BFu0s_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_L()
{
  {
    init_simple_test("aF_BFu0s_L");
    static aF_BFu0s_L lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_L.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_L(Test_aF_BFu0s_L, "aF_BFu0s_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_S()
{
  {
    init_simple_test("aF_BFu0s_S");
    static aF_BFu0s_S lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_S.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_S(Test_aF_BFu0s_S, "aF_BFu0s_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Uc()
{
  {
    init_simple_test("aF_BFu0s_Uc");
    static aF_BFu0s_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Uc.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Uc(Test_aF_BFu0s_Uc, "aF_BFu0s_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Ui()
{
  {
    init_simple_test("aF_BFu0s_Ui");
    static aF_BFu0s_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Ui.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Ui(Test_aF_BFu0s_Ui, "aF_BFu0s_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Ul()
{
  {
    init_simple_test("aF_BFu0s_Ul");
    static aF_BFu0s_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aF_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Ul.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Ul(Test_aF_BFu0s_Ul, "aF_BFu0s_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Us()
{
  {
    init_simple_test("aF_BFu0s_Us");
    static aF_BFu0s_Us lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Us.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Us(Test_aF_BFu0s_Us, "aF_BFu0s_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu0s_Vp()
{
  {
    init_simple_test("aF_BFu0s_Vp");
    static aF_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aF_BFu0s_Vp.v1");
    check_field_offset(lv, v2, 4, "aF_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaF_BFu0s_Vp(Test_aF_BFu0s_Vp, "aF_BFu0s_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15i_BFu0c()
{
  {
    init_simple_test("aF_BFu15i_BFu0c");
    static aF_BFu15i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu15i_BFu0c(Test_aF_BFu15i_BFu0c, "aF_BFu15i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15i_BFu0i()
{
  {
    init_simple_test("aF_BFu15i_BFu0i");
    static aF_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu15i_BFu0i(Test_aF_BFu15i_BFu0i, "aF_BFu15i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15i_BFu0ll()
{
  {
    init_simple_test("aF_BFu15i_BFu0ll");
    static aF_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu15i_BFu0ll(Test_aF_BFu15i_BFu0ll, "aF_BFu15i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15i_BFu0s()
{
  {
    init_simple_test("aF_BFu15i_BFu0s");
    static aF_BFu15i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu15i_BFu0s(Test_aF_BFu15i_BFu0s, "aF_BFu15i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15ll_BFu0c()
{
  {
    init_simple_test("aF_BFu15ll_BFu0c");
    static aF_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu15ll_BFu0c(Test_aF_BFu15ll_BFu0c, "aF_BFu15ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15ll_BFu0i()
{
  {
    init_simple_test("aF_BFu15ll_BFu0i");
    static aF_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu15ll_BFu0i(Test_aF_BFu15ll_BFu0i, "aF_BFu15ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu15ll_BFu0ll");
    static aF_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu15ll_BFu0ll(Test_aF_BFu15ll_BFu0ll, "aF_BFu15ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15ll_BFu0s()
{
  {
    init_simple_test("aF_BFu15ll_BFu0s");
    static aF_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu15ll_BFu0s(Test_aF_BFu15ll_BFu0s, "aF_BFu15ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15s_BFu0c()
{
  {
    init_simple_test("aF_BFu15s_BFu0c");
    static aF_BFu15s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu15s_BFu0c(Test_aF_BFu15s_BFu0c, "aF_BFu15s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15s_BFu0i()
{
  {
    init_simple_test("aF_BFu15s_BFu0i");
    static aF_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu15s_BFu0i(Test_aF_BFu15s_BFu0i, "aF_BFu15s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15s_BFu0ll()
{
  {
    init_simple_test("aF_BFu15s_BFu0ll");
    static aF_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu15s_BFu0ll(Test_aF_BFu15s_BFu0ll, "aF_BFu15s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu15s_BFu0s()
{
  {
    init_simple_test("aF_BFu15s_BFu0s");
    static aF_BFu15s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aF_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aF_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu15s_BFu0s(Test_aF_BFu15s_BFu0s, "aF_BFu15s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16i_BFu0c()
{
  {
    init_simple_test("aF_BFu16i_BFu0c");
    static aF_BFu16i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu16i_BFu0c(Test_aF_BFu16i_BFu0c, "aF_BFu16i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16i_BFu0i()
{
  {
    init_simple_test("aF_BFu16i_BFu0i");
    static aF_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu16i_BFu0i(Test_aF_BFu16i_BFu0i, "aF_BFu16i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16i_BFu0ll()
{
  {
    init_simple_test("aF_BFu16i_BFu0ll");
    static aF_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu16i_BFu0ll(Test_aF_BFu16i_BFu0ll, "aF_BFu16i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16i_BFu0s()
{
  {
    init_simple_test("aF_BFu16i_BFu0s");
    static aF_BFu16i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu16i_BFu0s(Test_aF_BFu16i_BFu0s, "aF_BFu16i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16ll_BFu0c()
{
  {
    init_simple_test("aF_BFu16ll_BFu0c");
    static aF_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu16ll_BFu0c(Test_aF_BFu16ll_BFu0c, "aF_BFu16ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16ll_BFu0i()
{
  {
    init_simple_test("aF_BFu16ll_BFu0i");
    static aF_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu16ll_BFu0i(Test_aF_BFu16ll_BFu0i, "aF_BFu16ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu16ll_BFu0ll");
    static aF_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu16ll_BFu0ll(Test_aF_BFu16ll_BFu0ll, "aF_BFu16ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16ll_BFu0s()
{
  {
    init_simple_test("aF_BFu16ll_BFu0s");
    static aF_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu16ll_BFu0s(Test_aF_BFu16ll_BFu0s, "aF_BFu16ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16s_BFu0c()
{
  {
    init_simple_test("aF_BFu16s_BFu0c");
    static aF_BFu16s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu16s_BFu0c(Test_aF_BFu16s_BFu0c, "aF_BFu16s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16s_BFu0i()
{
  {
    init_simple_test("aF_BFu16s_BFu0i");
    static aF_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu16s_BFu0i(Test_aF_BFu16s_BFu0i, "aF_BFu16s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16s_BFu0ll()
{
  {
    init_simple_test("aF_BFu16s_BFu0ll");
    static aF_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu16s_BFu0ll(Test_aF_BFu16s_BFu0ll, "aF_BFu16s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu16s_BFu0s()
{
  {
    init_simple_test("aF_BFu16s_BFu0s");
    static aF_BFu16s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aF_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aF_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu16s_BFu0s(Test_aF_BFu16s_BFu0s, "aF_BFu16s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17i_BFu0c()
{
  {
    init_simple_test("aF_BFu17i_BFu0c");
    static aF_BFu17i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu17i_BFu0c(Test_aF_BFu17i_BFu0c, "aF_BFu17i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17i_BFu0i()
{
  {
    init_simple_test("aF_BFu17i_BFu0i");
    static aF_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu17i_BFu0i(Test_aF_BFu17i_BFu0i, "aF_BFu17i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17i_BFu0ll()
{
  {
    init_simple_test("aF_BFu17i_BFu0ll");
    static aF_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu17i_BFu0ll(Test_aF_BFu17i_BFu0ll, "aF_BFu17i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17i_BFu0s()
{
  {
    init_simple_test("aF_BFu17i_BFu0s");
    static aF_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu17i_BFu0s(Test_aF_BFu17i_BFu0s, "aF_BFu17i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17ll_BFu0c()
{
  {
    init_simple_test("aF_BFu17ll_BFu0c");
    static aF_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aF_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu17ll_BFu0c(Test_aF_BFu17ll_BFu0c, "aF_BFu17ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17ll_BFu0i()
{
  {
    init_simple_test("aF_BFu17ll_BFu0i");
    static aF_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu17ll_BFu0i(Test_aF_BFu17ll_BFu0i, "aF_BFu17ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu17ll_BFu0ll");
    static aF_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu17ll_BFu0ll(Test_aF_BFu17ll_BFu0ll, "aF_BFu17ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu17ll_BFu0s()
{
  {
    init_simple_test("aF_BFu17ll_BFu0s");
    static aF_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aF_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aF_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu17ll_BFu0s(Test_aF_BFu17ll_BFu0s, "aF_BFu17ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1c_BFu0c()
{
  {
    init_simple_test("aF_BFu1c_BFu0c");
    static aF_BFu1c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu1c_BFu0c(Test_aF_BFu1c_BFu0c, "aF_BFu1c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1c_BFu0i()
{
  {
    init_simple_test("aF_BFu1c_BFu0i");
    static aF_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu1c_BFu0i(Test_aF_BFu1c_BFu0i, "aF_BFu1c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1c_BFu0ll()
{
  {
    init_simple_test("aF_BFu1c_BFu0ll");
    static aF_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu1c_BFu0ll(Test_aF_BFu1c_BFu0ll, "aF_BFu1c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1c_BFu0s()
{
  {
    init_simple_test("aF_BFu1c_BFu0s");
    static aF_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu1c_BFu0s(Test_aF_BFu1c_BFu0s, "aF_BFu1c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1i_BFu0c()
{
  {
    init_simple_test("aF_BFu1i_BFu0c");
    static aF_BFu1i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu1i_BFu0c(Test_aF_BFu1i_BFu0c, "aF_BFu1i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1i_BFu0i()
{
  {
    init_simple_test("aF_BFu1i_BFu0i");
    static aF_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu1i_BFu0i(Test_aF_BFu1i_BFu0i, "aF_BFu1i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1i_BFu0ll()
{
  {
    init_simple_test("aF_BFu1i_BFu0ll");
    static aF_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu1i_BFu0ll(Test_aF_BFu1i_BFu0ll, "aF_BFu1i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1i_BFu0s()
{
  {
    init_simple_test("aF_BFu1i_BFu0s");
    static aF_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu1i_BFu0s(Test_aF_BFu1i_BFu0s, "aF_BFu1i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1ll_BFu0c()
{
  {
    init_simple_test("aF_BFu1ll_BFu0c");
    static aF_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu1ll_BFu0c(Test_aF_BFu1ll_BFu0c, "aF_BFu1ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1ll_BFu0i()
{
  {
    init_simple_test("aF_BFu1ll_BFu0i");
    static aF_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu1ll_BFu0i(Test_aF_BFu1ll_BFu0i, "aF_BFu1ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu1ll_BFu0ll");
    static aF_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu1ll_BFu0ll(Test_aF_BFu1ll_BFu0ll, "aF_BFu1ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1ll_BFu0s()
{
  {
    init_simple_test("aF_BFu1ll_BFu0s");
    static aF_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu1ll_BFu0s(Test_aF_BFu1ll_BFu0s, "aF_BFu1ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1s_BFu0c()
{
  {
    init_simple_test("aF_BFu1s_BFu0c");
    static aF_BFu1s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu1s_BFu0c(Test_aF_BFu1s_BFu0c, "aF_BFu1s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1s_BFu0i()
{
  {
    init_simple_test("aF_BFu1s_BFu0i");
    static aF_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu1s_BFu0i(Test_aF_BFu1s_BFu0i, "aF_BFu1s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1s_BFu0ll()
{
  {
    init_simple_test("aF_BFu1s_BFu0ll");
    static aF_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu1s_BFu0ll(Test_aF_BFu1s_BFu0ll, "aF_BFu1s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu1s_BFu0s()
{
  {
    init_simple_test("aF_BFu1s_BFu0s");
    static aF_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aF_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu1s_BFu0s(Test_aF_BFu1s_BFu0s, "aF_BFu1s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31i_BFu0c()
{
  {
    init_simple_test("aF_BFu31i_BFu0c");
    static aF_BFu31i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu31i_BFu0c(Test_aF_BFu31i_BFu0c, "aF_BFu31i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31i_BFu0i()
{
  {
    init_simple_test("aF_BFu31i_BFu0i");
    static aF_BFu31i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu31i_BFu0i(Test_aF_BFu31i_BFu0i, "aF_BFu31i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31i_BFu0ll()
{
  {
    init_simple_test("aF_BFu31i_BFu0ll");
    static aF_BFu31i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu31i_BFu0ll(Test_aF_BFu31i_BFu0ll, "aF_BFu31i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31i_BFu0s()
{
  {
    init_simple_test("aF_BFu31i_BFu0s");
    static aF_BFu31i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu31i_BFu0s(Test_aF_BFu31i_BFu0s, "aF_BFu31i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31ll_BFu0c()
{
  {
    init_simple_test("aF_BFu31ll_BFu0c");
    static aF_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu31ll_BFu0c(Test_aF_BFu31ll_BFu0c, "aF_BFu31ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31ll_BFu0i()
{
  {
    init_simple_test("aF_BFu31ll_BFu0i");
    static aF_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu31ll_BFu0i(Test_aF_BFu31ll_BFu0i, "aF_BFu31ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu31ll_BFu0ll");
    static aF_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu31ll_BFu0ll(Test_aF_BFu31ll_BFu0ll, "aF_BFu31ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu31ll_BFu0s()
{
  {
    init_simple_test("aF_BFu31ll_BFu0s");
    static aF_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aF_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aF_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu31ll_BFu0s(Test_aF_BFu31ll_BFu0s, "aF_BFu31ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32i_BFu0c()
{
  {
    init_simple_test("aF_BFu32i_BFu0c");
    static aF_BFu32i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu32i_BFu0c(Test_aF_BFu32i_BFu0c, "aF_BFu32i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32i_BFu0i()
{
  {
    init_simple_test("aF_BFu32i_BFu0i");
    static aF_BFu32i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu32i_BFu0i(Test_aF_BFu32i_BFu0i, "aF_BFu32i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32i_BFu0ll()
{
  {
    init_simple_test("aF_BFu32i_BFu0ll");
    static aF_BFu32i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu32i_BFu0ll(Test_aF_BFu32i_BFu0ll, "aF_BFu32i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32i_BFu0s()
{
  {
    init_simple_test("aF_BFu32i_BFu0s");
    static aF_BFu32i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu32i_BFu0s(Test_aF_BFu32i_BFu0s, "aF_BFu32i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32ll_BFu0c()
{
  {
    init_simple_test("aF_BFu32ll_BFu0c");
    static aF_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu32ll_BFu0c(Test_aF_BFu32ll_BFu0c, "aF_BFu32ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32ll_BFu0i()
{
  {
    init_simple_test("aF_BFu32ll_BFu0i");
    static aF_BFu32ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu32ll_BFu0i(Test_aF_BFu32ll_BFu0i, "aF_BFu32ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu32ll_BFu0ll");
    static aF_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu32ll_BFu0ll(Test_aF_BFu32ll_BFu0ll, "aF_BFu32ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu32ll_BFu0s()
{
  {
    init_simple_test("aF_BFu32ll_BFu0s");
    static aF_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aF_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aF_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu32ll_BFu0s(Test_aF_BFu32ll_BFu0s, "aF_BFu32ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu33_BFu0c()
{
  {
    init_simple_test("aF_BFu33_BFu0c");
    static aF_BFu33_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aF_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu33_BFu0c(Test_aF_BFu33_BFu0c, "aF_BFu33_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu33_BFu0i()
{
  {
    init_simple_test("aF_BFu33_BFu0i");
    static aF_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aF_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu33_BFu0i(Test_aF_BFu33_BFu0i, "aF_BFu33_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu33_BFu0ll()
{
  {
    init_simple_test("aF_BFu33_BFu0ll");
    static aF_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu33_BFu0ll(Test_aF_BFu33_BFu0ll, "aF_BFu33_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu33_BFu0s()
{
  {
    init_simple_test("aF_BFu33_BFu0s");
    static aF_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aF_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aF_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aF_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu33_BFu0s(Test_aF_BFu33_BFu0s, "aF_BFu33_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7c_BFu0c()
{
  {
    init_simple_test("aF_BFu7c_BFu0c");
    static aF_BFu7c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu7c_BFu0c(Test_aF_BFu7c_BFu0c, "aF_BFu7c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7c_BFu0i()
{
  {
    init_simple_test("aF_BFu7c_BFu0i");
    static aF_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu7c_BFu0i(Test_aF_BFu7c_BFu0i, "aF_BFu7c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7c_BFu0ll()
{
  {
    init_simple_test("aF_BFu7c_BFu0ll");
    static aF_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu7c_BFu0ll(Test_aF_BFu7c_BFu0ll, "aF_BFu7c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7c_BFu0s()
{
  {
    init_simple_test("aF_BFu7c_BFu0s");
    static aF_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu7c_BFu0s(Test_aF_BFu7c_BFu0s, "aF_BFu7c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7i_BFu0c()
{
  {
    init_simple_test("aF_BFu7i_BFu0c");
    static aF_BFu7i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu7i_BFu0c(Test_aF_BFu7i_BFu0c, "aF_BFu7i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7i_BFu0i()
{
  {
    init_simple_test("aF_BFu7i_BFu0i");
    static aF_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu7i_BFu0i(Test_aF_BFu7i_BFu0i, "aF_BFu7i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7i_BFu0ll()
{
  {
    init_simple_test("aF_BFu7i_BFu0ll");
    static aF_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu7i_BFu0ll(Test_aF_BFu7i_BFu0ll, "aF_BFu7i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7i_BFu0s()
{
  {
    init_simple_test("aF_BFu7i_BFu0s");
    static aF_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu7i_BFu0s(Test_aF_BFu7i_BFu0s, "aF_BFu7i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7ll_BFu0c()
{
  {
    init_simple_test("aF_BFu7ll_BFu0c");
    static aF_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu7ll_BFu0c(Test_aF_BFu7ll_BFu0c, "aF_BFu7ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7ll_BFu0i()
{
  {
    init_simple_test("aF_BFu7ll_BFu0i");
    static aF_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu7ll_BFu0i(Test_aF_BFu7ll_BFu0i, "aF_BFu7ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu7ll_BFu0ll");
    static aF_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu7ll_BFu0ll(Test_aF_BFu7ll_BFu0ll, "aF_BFu7ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7ll_BFu0s()
{
  {
    init_simple_test("aF_BFu7ll_BFu0s");
    static aF_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu7ll_BFu0s(Test_aF_BFu7ll_BFu0s, "aF_BFu7ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7s_BFu0c()
{
  {
    init_simple_test("aF_BFu7s_BFu0c");
    static aF_BFu7s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu7s_BFu0c(Test_aF_BFu7s_BFu0c, "aF_BFu7s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7s_BFu0i()
{
  {
    init_simple_test("aF_BFu7s_BFu0i");
    static aF_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu7s_BFu0i(Test_aF_BFu7s_BFu0i, "aF_BFu7s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7s_BFu0ll()
{
  {
    init_simple_test("aF_BFu7s_BFu0ll");
    static aF_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu7s_BFu0ll(Test_aF_BFu7s_BFu0ll, "aF_BFu7s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu7s_BFu0s()
{
  {
    init_simple_test("aF_BFu7s_BFu0s");
    static aF_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aF_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aF_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu7s_BFu0s(Test_aF_BFu7s_BFu0s, "aF_BFu7s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8c_BFu0c()
{
  {
    init_simple_test("aF_BFu8c_BFu0c");
    static aF_BFu8c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8c_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu8c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu8c_BFu0c(Test_aF_BFu8c_BFu0c, "aF_BFu8c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8c_BFu0i()
{
  {
    init_simple_test("aF_BFu8c_BFu0i");
    static aF_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8c_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu8c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu8c_BFu0i(Test_aF_BFu8c_BFu0i, "aF_BFu8c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8c_BFu0ll()
{
  {
    init_simple_test("aF_BFu8c_BFu0ll");
    static aF_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu8c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu8c_BFu0ll(Test_aF_BFu8c_BFu0ll, "aF_BFu8c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8c_BFu0s()
{
  {
    init_simple_test("aF_BFu8c_BFu0s");
    static aF_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8c_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu8c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu8c_BFu0s(Test_aF_BFu8c_BFu0s, "aF_BFu8c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8i_BFu0c()
{
  {
    init_simple_test("aF_BFu8i_BFu0c");
    static aF_BFu8i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu8i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu8i_BFu0c(Test_aF_BFu8i_BFu0c, "aF_BFu8i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8i_BFu0i()
{
  {
    init_simple_test("aF_BFu8i_BFu0i");
    static aF_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu8i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu8i_BFu0i(Test_aF_BFu8i_BFu0i, "aF_BFu8i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8i_BFu0ll()
{
  {
    init_simple_test("aF_BFu8i_BFu0ll");
    static aF_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu8i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu8i_BFu0ll(Test_aF_BFu8i_BFu0ll, "aF_BFu8i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8i_BFu0s()
{
  {
    init_simple_test("aF_BFu8i_BFu0s");
    static aF_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu8i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu8i_BFu0s(Test_aF_BFu8i_BFu0s, "aF_BFu8i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8ll_BFu0c()
{
  {
    init_simple_test("aF_BFu8ll_BFu0c");
    static aF_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu8ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu8ll_BFu0c(Test_aF_BFu8ll_BFu0c, "aF_BFu8ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8ll_BFu0i()
{
  {
    init_simple_test("aF_BFu8ll_BFu0i");
    static aF_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu8ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu8ll_BFu0i(Test_aF_BFu8ll_BFu0i, "aF_BFu8ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu8ll_BFu0ll");
    static aF_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu8ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu8ll_BFu0ll(Test_aF_BFu8ll_BFu0ll, "aF_BFu8ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8ll_BFu0s()
{
  {
    init_simple_test("aF_BFu8ll_BFu0s");
    static aF_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu8ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu8ll_BFu0s(Test_aF_BFu8ll_BFu0s, "aF_BFu8ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8s_BFu0c()
{
  {
    init_simple_test("aF_BFu8s_BFu0c");
    static aF_BFu8s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu8s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu8s_BFu0c(Test_aF_BFu8s_BFu0c, "aF_BFu8s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8s_BFu0i()
{
  {
    init_simple_test("aF_BFu8s_BFu0i");
    static aF_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu8s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu8s_BFu0i(Test_aF_BFu8s_BFu0i, "aF_BFu8s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8s_BFu0ll()
{
  {
    init_simple_test("aF_BFu8s_BFu0ll");
    static aF_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu8s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu8s_BFu0ll(Test_aF_BFu8s_BFu0ll, "aF_BFu8s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu8s_BFu0s()
{
  {
    init_simple_test("aF_BFu8s_BFu0s");
    static aF_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu8s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu8s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aF_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aF_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu8s_BFu0s(Test_aF_BFu8s_BFu0s, "aF_BFu8s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9i_BFu0c()
{
  {
    init_simple_test("aF_BFu9i_BFu0c");
    static aF_BFu9i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9i_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu9i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu9i_BFu0c(Test_aF_BFu9i_BFu0c, "aF_BFu9i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9i_BFu0i()
{
  {
    init_simple_test("aF_BFu9i_BFu0i");
    static aF_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9i_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu9i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu9i_BFu0i(Test_aF_BFu9i_BFu0i, "aF_BFu9i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9i_BFu0ll()
{
  {
    init_simple_test("aF_BFu9i_BFu0ll");
    static aF_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu9i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu9i_BFu0ll(Test_aF_BFu9i_BFu0ll, "aF_BFu9i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9i_BFu0s()
{
  {
    init_simple_test("aF_BFu9i_BFu0s");
    static aF_BFu9i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9i_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu9i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu9i_BFu0s(Test_aF_BFu9i_BFu0s, "aF_BFu9i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9ll_BFu0c()
{
  {
    init_simple_test("aF_BFu9ll_BFu0c");
    static aF_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu9ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu9ll_BFu0c(Test_aF_BFu9ll_BFu0c, "aF_BFu9ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9ll_BFu0i()
{
  {
    init_simple_test("aF_BFu9ll_BFu0i");
    static aF_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu9ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu9ll_BFu0i(Test_aF_BFu9ll_BFu0i, "aF_BFu9ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aF_BFu9ll_BFu0ll");
    static aF_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu9ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu9ll_BFu0ll(Test_aF_BFu9ll_BFu0ll, "aF_BFu9ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9ll_BFu0s()
{
  {
    init_simple_test("aF_BFu9ll_BFu0s");
    static aF_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu9ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu9ll_BFu0s(Test_aF_BFu9ll_BFu0s, "aF_BFu9ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9s_BFu0c()
{
  {
    init_simple_test("aF_BFu9s_BFu0c");
    static aF_BFu9s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9s_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_BFu9s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaF_BFu9s_BFu0c(Test_aF_BFu9s_BFu0c, "aF_BFu9s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9s_BFu0i()
{
  {
    init_simple_test("aF_BFu9s_BFu0i");
    static aF_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9s_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_BFu9s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaF_BFu9s_BFu0i(Test_aF_BFu9s_BFu0i, "aF_BFu9s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9s_BFu0ll()
{
  {
    init_simple_test("aF_BFu9s_BFu0ll");
    static aF_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_BFu9s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaF_BFu9s_BFu0ll(Test_aF_BFu9s_BFu0ll, "aF_BFu9s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_BFu9s_BFu0s()
{
  {
    init_simple_test("aF_BFu9s_BFu0s");
    static aF_BFu9s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_BFu9s_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_BFu9s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aF_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aF_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaF_BFu9s_BFu0s(Test_aF_BFu9s_BFu0s, "aF_BFu9s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_C_BFu0c()
{
  {
    init_simple_test("aF_C_BFu0c");
    static aF_C_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_C_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_C_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_C_BFu0c(Test_aF_C_BFu0c, "aF_C_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_C_BFu0i()
{
  {
    init_simple_test("aF_C_BFu0i");
    static aF_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_C_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_C_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_C_BFu0i(Test_aF_C_BFu0i, "aF_C_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_C_BFu0ll()
{
  {
    init_simple_test("aF_C_BFu0ll");
    static aF_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_C_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_C_BFu0ll(Test_aF_C_BFu0ll, "aF_C_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_C_BFu0s()
{
  {
    init_simple_test("aF_C_BFu0s");
    static aF_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_C_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_C_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_C_BFu0s(Test_aF_C_BFu0s, "aF_C_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_D_BFu0c()
{
  {
    init_simple_test("aF_D_BFu0c");
    static aF_D_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aF_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_D_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_D_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_D_BFu0c(Test_aF_D_BFu0c, "aF_D_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_D_BFu0i()
{
  {
    init_simple_test("aF_D_BFu0i");
    static aF_D_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aF_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_D_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_D_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_D_BFu0i(Test_aF_D_BFu0i, "aF_D_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_D_BFu0ll()
{
  {
    init_simple_test("aF_D_BFu0ll");
    static aF_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_D_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_D_BFu0ll(Test_aF_D_BFu0ll, "aF_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_D_BFu0s()
{
  {
    init_simple_test("aF_D_BFu0s");
    static aF_D_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aF_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_D_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_D_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_D_BFu0s(Test_aF_D_BFu0s, "aF_D_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_F_BFu0c()
{
  {
    init_simple_test("aF_F_BFu0c");
    static aF_F_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_F_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_F_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_F_BFu0c(Test_aF_F_BFu0c, "aF_F_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_F_BFu0i()
{
  {
    init_simple_test("aF_F_BFu0i");
    static aF_F_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_F_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_F_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_F_BFu0i(Test_aF_F_BFu0i, "aF_F_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_F_BFu0ll()
{
  {
    init_simple_test("aF_F_BFu0ll");
    static aF_F_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_F_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_F_BFu0ll(Test_aF_F_BFu0ll, "aF_F_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_F_BFu0s()
{
  {
    init_simple_test("aF_F_BFu0s");
    static aF_F_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_F_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_F_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_F_BFu0s(Test_aF_F_BFu0s, "aF_F_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_I_BFu0c()
{
  {
    init_simple_test("aF_I_BFu0c");
    static aF_I_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_I_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_I_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_I_BFu0c(Test_aF_I_BFu0c, "aF_I_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_I_BFu0i()
{
  {
    init_simple_test("aF_I_BFu0i");
    static aF_I_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_I_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_I_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_I_BFu0i(Test_aF_I_BFu0i, "aF_I_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_I_BFu0ll()
{
  {
    init_simple_test("aF_I_BFu0ll");
    static aF_I_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_I_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_I_BFu0ll(Test_aF_I_BFu0ll, "aF_I_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_I_BFu0s()
{
  {
    init_simple_test("aF_I_BFu0s");
    static aF_I_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_I_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_I_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_I_BFu0s(Test_aF_I_BFu0s, "aF_I_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ip_BFu0c()
{
  {
    init_simple_test("aF_Ip_BFu0c");
    static aF_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Ip_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Ip_BFu0c(Test_aF_Ip_BFu0c, "aF_Ip_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ip_BFu0i()
{
  {
    init_simple_test("aF_Ip_BFu0i");
    static aF_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Ip_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Ip_BFu0i(Test_aF_Ip_BFu0i, "aF_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ip_BFu0ll()
{
  {
    init_simple_test("aF_Ip_BFu0ll");
    static aF_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aF_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Ip_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Ip_BFu0ll(Test_aF_Ip_BFu0ll, "aF_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ip_BFu0s()
{
  {
    init_simple_test("aF_Ip_BFu0s");
    static aF_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Ip_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Ip_BFu0s(Test_aF_Ip_BFu0s, "aF_Ip_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_L_BFu0c()
{
  {
    init_simple_test("aF_L_BFu0c");
    static aF_L_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aF_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_L_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_L_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_L_BFu0c(Test_aF_L_BFu0c, "aF_L_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_L_BFu0i()
{
  {
    init_simple_test("aF_L_BFu0i");
    static aF_L_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aF_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_L_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_L_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_L_BFu0i(Test_aF_L_BFu0i, "aF_L_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_L_BFu0ll()
{
  {
    init_simple_test("aF_L_BFu0ll");
    static aF_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_L_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_L_BFu0ll(Test_aF_L_BFu0ll, "aF_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_L_BFu0s()
{
  {
    init_simple_test("aF_L_BFu0s");
    static aF_L_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aF_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_L_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_L_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_L_BFu0s(Test_aF_L_BFu0s, "aF_L_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_S_BFu0c()
{
  {
    init_simple_test("aF_S_BFu0c");
    static aF_S_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_S_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_S_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_S_BFu0c(Test_aF_S_BFu0c, "aF_S_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_S_BFu0i()
{
  {
    init_simple_test("aF_S_BFu0i");
    static aF_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_S_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_S_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_S_BFu0i(Test_aF_S_BFu0i, "aF_S_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_S_BFu0ll()
{
  {
    init_simple_test("aF_S_BFu0ll");
    static aF_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_S_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_S_BFu0ll(Test_aF_S_BFu0ll, "aF_S_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_S_BFu0s()
{
  {
    init_simple_test("aF_S_BFu0s");
    static aF_S_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_S_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_S_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_S_BFu0s(Test_aF_S_BFu0s, "aF_S_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Uc_BFu0c()
{
  {
    init_simple_test("aF_Uc_BFu0c");
    static aF_Uc_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aF_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Uc_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Uc_BFu0c(Test_aF_Uc_BFu0c, "aF_Uc_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Uc_BFu0i()
{
  {
    init_simple_test("aF_Uc_BFu0i");
    static aF_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Uc_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Uc_BFu0i(Test_aF_Uc_BFu0i, "aF_Uc_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Uc_BFu0ll()
{
  {
    init_simple_test("aF_Uc_BFu0ll");
    static aF_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Uc_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Uc_BFu0ll(Test_aF_Uc_BFu0ll, "aF_Uc_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Uc_BFu0s()
{
  {
    init_simple_test("aF_Uc_BFu0s");
    static aF_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aF_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Uc_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Uc_BFu0s(Test_aF_Uc_BFu0s, "aF_Uc_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ui_BFu0c()
{
  {
    init_simple_test("aF_Ui_BFu0c");
    static aF_Ui_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aF_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Ui_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Ui_BFu0c(Test_aF_Ui_BFu0c, "aF_Ui_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ui_BFu0i()
{
  {
    init_simple_test("aF_Ui_BFu0i");
    static aF_Ui_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aF_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Ui_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Ui_BFu0i(Test_aF_Ui_BFu0i, "aF_Ui_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ui_BFu0ll()
{
  {
    init_simple_test("aF_Ui_BFu0ll");
    static aF_Ui_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aF_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Ui_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Ui_BFu0ll(Test_aF_Ui_BFu0ll, "aF_Ui_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ui_BFu0s()
{
  {
    init_simple_test("aF_Ui_BFu0s");
    static aF_Ui_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aF_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Ui_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Ui_BFu0s(Test_aF_Ui_BFu0s, "aF_Ui_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ul_BFu0c()
{
  {
    init_simple_test("aF_Ul_BFu0c");
    static aF_Ul_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aF_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Ul_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Ul_BFu0c(Test_aF_Ul_BFu0c, "aF_Ul_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ul_BFu0i()
{
  {
    init_simple_test("aF_Ul_BFu0i");
    static aF_Ul_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aF_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Ul_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Ul_BFu0i(Test_aF_Ul_BFu0i, "aF_Ul_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ul_BFu0ll()
{
  {
    init_simple_test("aF_Ul_BFu0ll");
    static aF_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aF_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Ul_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Ul_BFu0ll(Test_aF_Ul_BFu0ll, "aF_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Ul_BFu0s()
{
  {
    init_simple_test("aF_Ul_BFu0s");
    static aF_Ul_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aF_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Ul_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Ul_BFu0s(Test_aF_Ul_BFu0s, "aF_Ul_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Us_BFu0c()
{
  {
    init_simple_test("aF_Us_BFu0c");
    static aF_Us_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aF_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Us_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Us_BFu0c(Test_aF_Us_BFu0c, "aF_Us_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Us_BFu0i()
{
  {
    init_simple_test("aF_Us_BFu0i");
    static aF_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Us_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Us_BFu0i(Test_aF_Us_BFu0i, "aF_Us_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Us_BFu0ll()
{
  {
    init_simple_test("aF_Us_BFu0ll");
    static aF_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aF_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Us_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Us_BFu0ll(Test_aF_Us_BFu0ll, "aF_Us_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Us_BFu0s()
{
  {
    init_simple_test("aF_Us_BFu0s");
    static aF_Us_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aF_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Us_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Us_BFu0s(Test_aF_Us_BFu0s, "aF_Us_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Vp_BFu0c()
{
  {
    init_simple_test("aF_Vp_BFu0c");
    static aF_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "aF_Vp_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aF_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaF_Vp_BFu0c(Test_aF_Vp_BFu0c, "aF_Vp_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Vp_BFu0i()
{
  {
    init_simple_test("aF_Vp_BFu0i");
    static aF_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "aF_Vp_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aF_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaF_Vp_BFu0i(Test_aF_Vp_BFu0i, "aF_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Vp_BFu0ll()
{
  {
    init_simple_test("aF_Vp_BFu0ll");
    static aF_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aF_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aF_Vp_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aF_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaF_Vp_BFu0ll(Test_aF_Vp_BFu0ll, "aF_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aF_Vp_BFu0s()
{
  {
    init_simple_test("aF_Vp_BFu0s");
    static aF_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aF_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aF_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "aF_Vp_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aF_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaF_Vp_BFu0s(Test_aF_Vp_BFu0s, "aF_Vp_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c()
{
  {
    init_simple_test("aI_BFu0c");
    static aI_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0c(Test_aI_BFu0c, "aI_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu0c()
{
  {
    init_simple_test("aI_BFu0c_BFu0c");
    static aI_BFu0c_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu0c(Test_aI_BFu0c_BFu0c, "aI_BFu0c_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu0i()
{
  {
    init_simple_test("aI_BFu0c_BFu0i");
    static aI_BFu0c_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu0i(Test_aI_BFu0c_BFu0i, "aI_BFu0c_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu0ll()
{
  {
    init_simple_test("aI_BFu0c_BFu0ll");
    static aI_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu0ll(Test_aI_BFu0c_BFu0ll, "aI_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu0s()
{
  {
    init_simple_test("aI_BFu0c_BFu0s");
    static aI_BFu0c_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu0s(Test_aI_BFu0c_BFu0s, "aI_BFu0c_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu15i()
{
  {
    init_simple_test("aI_BFu0c_BFu15i");
    static aI_BFu0c_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu15i(Test_aI_BFu0c_BFu15i, "aI_BFu0c_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu15ll()
{
  {
    init_simple_test("aI_BFu0c_BFu15ll");
    static aI_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu15ll(Test_aI_BFu0c_BFu15ll, "aI_BFu0c_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu15s()
{
  {
    init_simple_test("aI_BFu0c_BFu15s");
    static aI_BFu0c_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu15s(Test_aI_BFu0c_BFu15s, "aI_BFu0c_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu16i()
{
  {
    init_simple_test("aI_BFu0c_BFu16i");
    static aI_BFu0c_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu16i(Test_aI_BFu0c_BFu16i, "aI_BFu0c_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu16ll()
{
  {
    init_simple_test("aI_BFu0c_BFu16ll");
    static aI_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu16ll(Test_aI_BFu0c_BFu16ll, "aI_BFu0c_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu16s()
{
  {
    init_simple_test("aI_BFu0c_BFu16s");
    static aI_BFu0c_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu16s(Test_aI_BFu0c_BFu16s, "aI_BFu0c_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu17i()
{
  {
    init_simple_test("aI_BFu0c_BFu17i");
    static aI_BFu0c_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu17i(Test_aI_BFu0c_BFu17i, "aI_BFu0c_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu17ll()
{
  {
    init_simple_test("aI_BFu0c_BFu17ll");
    static aI_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu17ll(Test_aI_BFu0c_BFu17ll, "aI_BFu0c_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu1c()
{
  {
    init_simple_test("aI_BFu0c_BFu1c");
    static aI_BFu0c_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu1c(Test_aI_BFu0c_BFu1c, "aI_BFu0c_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu1i()
{
  {
    init_simple_test("aI_BFu0c_BFu1i");
    static aI_BFu0c_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu1i(Test_aI_BFu0c_BFu1i, "aI_BFu0c_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu1ll()
{
  {
    init_simple_test("aI_BFu0c_BFu1ll");
    static aI_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu1ll(Test_aI_BFu0c_BFu1ll, "aI_BFu0c_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu1s()
{
  {
    init_simple_test("aI_BFu0c_BFu1s");
    static aI_BFu0c_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu1s(Test_aI_BFu0c_BFu1s, "aI_BFu0c_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu31i()
{
  {
    init_simple_test("aI_BFu0c_BFu31i");
    static aI_BFu0c_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu31i(Test_aI_BFu0c_BFu31i, "aI_BFu0c_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu31ll()
{
  {
    init_simple_test("aI_BFu0c_BFu31ll");
    static aI_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu31ll(Test_aI_BFu0c_BFu31ll, "aI_BFu0c_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu32i()
{
  {
    init_simple_test("aI_BFu0c_BFu32i");
    static aI_BFu0c_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu32i(Test_aI_BFu0c_BFu32i, "aI_BFu0c_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu32ll()
{
  {
    init_simple_test("aI_BFu0c_BFu32ll");
    static aI_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu32ll(Test_aI_BFu0c_BFu32ll, "aI_BFu0c_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu33()
{
  {
    init_simple_test("aI_BFu0c_BFu33");
    static aI_BFu0c_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aI_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu33(Test_aI_BFu0c_BFu33, "aI_BFu0c_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu7c()
{
  {
    init_simple_test("aI_BFu0c_BFu7c");
    static aI_BFu0c_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu7c(Test_aI_BFu0c_BFu7c, "aI_BFu0c_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu7i()
{
  {
    init_simple_test("aI_BFu0c_BFu7i");
    static aI_BFu0c_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu7i(Test_aI_BFu0c_BFu7i, "aI_BFu0c_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu7ll()
{
  {
    init_simple_test("aI_BFu0c_BFu7ll");
    static aI_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu7ll(Test_aI_BFu0c_BFu7ll, "aI_BFu0c_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu7s()
{
  {
    init_simple_test("aI_BFu0c_BFu7s");
    static aI_BFu0c_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu7s(Test_aI_BFu0c_BFu7s, "aI_BFu0c_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu8c()
{
  {
    init_simple_test("aI_BFu0c_BFu8c");
    static aI_BFu0c_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu8c(Test_aI_BFu0c_BFu8c, "aI_BFu0c_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu8i()
{
  {
    init_simple_test("aI_BFu0c_BFu8i");
    static aI_BFu0c_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu8i(Test_aI_BFu0c_BFu8i, "aI_BFu0c_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu8ll()
{
  {
    init_simple_test("aI_BFu0c_BFu8ll");
    static aI_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu8ll(Test_aI_BFu0c_BFu8ll, "aI_BFu0c_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu8s()
{
  {
    init_simple_test("aI_BFu0c_BFu8s");
    static aI_BFu0c_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu8s(Test_aI_BFu0c_BFu8s, "aI_BFu0c_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu9i()
{
  {
    init_simple_test("aI_BFu0c_BFu9i");
    static aI_BFu0c_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu9i(Test_aI_BFu0c_BFu9i, "aI_BFu0c_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu9ll()
{
  {
    init_simple_test("aI_BFu0c_BFu9ll");
    static aI_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu9ll(Test_aI_BFu0c_BFu9ll, "aI_BFu0c_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_BFu9s()
{
  {
    init_simple_test("aI_BFu0c_BFu9s");
    static aI_BFu0c_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_BFu9s(Test_aI_BFu0c_BFu9s, "aI_BFu0c_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_C()
{
  {
    init_simple_test("aI_BFu0c_C");
    static aI_BFu0c_C lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_C.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_C(Test_aI_BFu0c_C, "aI_BFu0c_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_D()
{
  {
    init_simple_test("aI_BFu0c_D");
    static aI_BFu0c_D lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_D.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_D(Test_aI_BFu0c_D, "aI_BFu0c_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_F()
{
  {
    init_simple_test("aI_BFu0c_F");
    static aI_BFu0c_F lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_F.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_F(Test_aI_BFu0c_F, "aI_BFu0c_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_I()
{
  {
    init_simple_test("aI_BFu0c_I");
    static aI_BFu0c_I lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_I.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_I(Test_aI_BFu0c_I, "aI_BFu0c_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Ip()
{
  {
    init_simple_test("aI_BFu0c_Ip");
    static aI_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Ip.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Ip(Test_aI_BFu0c_Ip, "aI_BFu0c_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_L()
{
  {
    init_simple_test("aI_BFu0c_L");
    static aI_BFu0c_L lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_L.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_L(Test_aI_BFu0c_L, "aI_BFu0c_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_S()
{
  {
    init_simple_test("aI_BFu0c_S");
    static aI_BFu0c_S lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_S.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_S(Test_aI_BFu0c_S, "aI_BFu0c_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Uc()
{
  {
    init_simple_test("aI_BFu0c_Uc");
    static aI_BFu0c_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Uc.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Uc(Test_aI_BFu0c_Uc, "aI_BFu0c_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Ui()
{
  {
    init_simple_test("aI_BFu0c_Ui");
    static aI_BFu0c_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Ui.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Ui(Test_aI_BFu0c_Ui, "aI_BFu0c_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Ul()
{
  {
    init_simple_test("aI_BFu0c_Ul");
    static aI_BFu0c_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Ul.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Ul(Test_aI_BFu0c_Ul, "aI_BFu0c_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Us()
{
  {
    init_simple_test("aI_BFu0c_Us");
    static aI_BFu0c_Us lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Us.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Us(Test_aI_BFu0c_Us, "aI_BFu0c_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0c_Vp()
{
  {
    init_simple_test("aI_BFu0c_Vp");
    static aI_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aI_BFu0c_Vp.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0c_Vp(Test_aI_BFu0c_Vp, "aI_BFu0c_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i()
{
  {
    init_simple_test("aI_BFu0i");
    static aI_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0i(Test_aI_BFu0i, "aI_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu0c()
{
  {
    init_simple_test("aI_BFu0i_BFu0c");
    static aI_BFu0i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu0c(Test_aI_BFu0i_BFu0c, "aI_BFu0i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu0i()
{
  {
    init_simple_test("aI_BFu0i_BFu0i");
    static aI_BFu0i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu0i(Test_aI_BFu0i_BFu0i, "aI_BFu0i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu0ll()
{
  {
    init_simple_test("aI_BFu0i_BFu0ll");
    static aI_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu0ll(Test_aI_BFu0i_BFu0ll, "aI_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu0s()
{
  {
    init_simple_test("aI_BFu0i_BFu0s");
    static aI_BFu0i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu0s(Test_aI_BFu0i_BFu0s, "aI_BFu0i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu15i()
{
  {
    init_simple_test("aI_BFu0i_BFu15i");
    static aI_BFu0i_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu15i(Test_aI_BFu0i_BFu15i, "aI_BFu0i_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu15ll()
{
  {
    init_simple_test("aI_BFu0i_BFu15ll");
    static aI_BFu0i_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu15ll(Test_aI_BFu0i_BFu15ll, "aI_BFu0i_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu15s()
{
  {
    init_simple_test("aI_BFu0i_BFu15s");
    static aI_BFu0i_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu15s(Test_aI_BFu0i_BFu15s, "aI_BFu0i_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu16i()
{
  {
    init_simple_test("aI_BFu0i_BFu16i");
    static aI_BFu0i_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu16i(Test_aI_BFu0i_BFu16i, "aI_BFu0i_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu16ll()
{
  {
    init_simple_test("aI_BFu0i_BFu16ll");
    static aI_BFu0i_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu16ll(Test_aI_BFu0i_BFu16ll, "aI_BFu0i_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu16s()
{
  {
    init_simple_test("aI_BFu0i_BFu16s");
    static aI_BFu0i_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu16s(Test_aI_BFu0i_BFu16s, "aI_BFu0i_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu17i()
{
  {
    init_simple_test("aI_BFu0i_BFu17i");
    static aI_BFu0i_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu17i(Test_aI_BFu0i_BFu17i, "aI_BFu0i_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu17ll()
{
  {
    init_simple_test("aI_BFu0i_BFu17ll");
    static aI_BFu0i_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu17ll(Test_aI_BFu0i_BFu17ll, "aI_BFu0i_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu1c()
{
  {
    init_simple_test("aI_BFu0i_BFu1c");
    static aI_BFu0i_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu1c(Test_aI_BFu0i_BFu1c, "aI_BFu0i_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu1i()
{
  {
    init_simple_test("aI_BFu0i_BFu1i");
    static aI_BFu0i_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu1i(Test_aI_BFu0i_BFu1i, "aI_BFu0i_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu1ll()
{
  {
    init_simple_test("aI_BFu0i_BFu1ll");
    static aI_BFu0i_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu1ll(Test_aI_BFu0i_BFu1ll, "aI_BFu0i_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu1s()
{
  {
    init_simple_test("aI_BFu0i_BFu1s");
    static aI_BFu0i_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu1s(Test_aI_BFu0i_BFu1s, "aI_BFu0i_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu31i()
{
  {
    init_simple_test("aI_BFu0i_BFu31i");
    static aI_BFu0i_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu31i(Test_aI_BFu0i_BFu31i, "aI_BFu0i_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu31ll()
{
  {
    init_simple_test("aI_BFu0i_BFu31ll");
    static aI_BFu0i_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu31ll(Test_aI_BFu0i_BFu31ll, "aI_BFu0i_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu32i()
{
  {
    init_simple_test("aI_BFu0i_BFu32i");
    static aI_BFu0i_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu32i(Test_aI_BFu0i_BFu32i, "aI_BFu0i_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu32ll()
{
  {
    init_simple_test("aI_BFu0i_BFu32ll");
    static aI_BFu0i_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu32ll(Test_aI_BFu0i_BFu32ll, "aI_BFu0i_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu33()
{
  {
    init_simple_test("aI_BFu0i_BFu33");
    static aI_BFu0i_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aI_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu0i_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu33(Test_aI_BFu0i_BFu33, "aI_BFu0i_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu7c()
{
  {
    init_simple_test("aI_BFu0i_BFu7c");
    static aI_BFu0i_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu7c(Test_aI_BFu0i_BFu7c, "aI_BFu0i_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu7i()
{
  {
    init_simple_test("aI_BFu0i_BFu7i");
    static aI_BFu0i_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu7i(Test_aI_BFu0i_BFu7i, "aI_BFu0i_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu7ll()
{
  {
    init_simple_test("aI_BFu0i_BFu7ll");
    static aI_BFu0i_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu7ll(Test_aI_BFu0i_BFu7ll, "aI_BFu0i_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu7s()
{
  {
    init_simple_test("aI_BFu0i_BFu7s");
    static aI_BFu0i_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu7s(Test_aI_BFu0i_BFu7s, "aI_BFu0i_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu8c()
{
  {
    init_simple_test("aI_BFu0i_BFu8c");
    static aI_BFu0i_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu8c(Test_aI_BFu0i_BFu8c, "aI_BFu0i_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu8i()
{
  {
    init_simple_test("aI_BFu0i_BFu8i");
    static aI_BFu0i_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu8i(Test_aI_BFu0i_BFu8i, "aI_BFu0i_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu8ll()
{
  {
    init_simple_test("aI_BFu0i_BFu8ll");
    static aI_BFu0i_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu8ll(Test_aI_BFu0i_BFu8ll, "aI_BFu0i_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu8s()
{
  {
    init_simple_test("aI_BFu0i_BFu8s");
    static aI_BFu0i_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu8s(Test_aI_BFu0i_BFu8s, "aI_BFu0i_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu9i()
{
  {
    init_simple_test("aI_BFu0i_BFu9i");
    static aI_BFu0i_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu9i(Test_aI_BFu0i_BFu9i, "aI_BFu0i_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu9ll()
{
  {
    init_simple_test("aI_BFu0i_BFu9ll");
    static aI_BFu0i_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu9ll(Test_aI_BFu0i_BFu9ll, "aI_BFu0i_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_BFu9s()
{
  {
    init_simple_test("aI_BFu0i_BFu9s");
    static aI_BFu0i_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_BFu9s(Test_aI_BFu0i_BFu9s, "aI_BFu0i_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_C()
{
  {
    init_simple_test("aI_BFu0i_C");
    static aI_BFu0i_C lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_C.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_C(Test_aI_BFu0i_C, "aI_BFu0i_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_D()
{
  {
    init_simple_test("aI_BFu0i_D");
    static aI_BFu0i_D lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_D.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_D(Test_aI_BFu0i_D, "aI_BFu0i_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_F()
{
  {
    init_simple_test("aI_BFu0i_F");
    static aI_BFu0i_F lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_F.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_F(Test_aI_BFu0i_F, "aI_BFu0i_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_I()
{
  {
    init_simple_test("aI_BFu0i_I");
    static aI_BFu0i_I lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_I.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_I(Test_aI_BFu0i_I, "aI_BFu0i_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Ip()
{
  {
    init_simple_test("aI_BFu0i_Ip");
    static aI_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Ip.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Ip(Test_aI_BFu0i_Ip, "aI_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_L()
{
  {
    init_simple_test("aI_BFu0i_L");
    static aI_BFu0i_L lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_L.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_L(Test_aI_BFu0i_L, "aI_BFu0i_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_S()
{
  {
    init_simple_test("aI_BFu0i_S");
    static aI_BFu0i_S lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_S.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_S(Test_aI_BFu0i_S, "aI_BFu0i_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Uc()
{
  {
    init_simple_test("aI_BFu0i_Uc");
    static aI_BFu0i_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Uc.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Uc(Test_aI_BFu0i_Uc, "aI_BFu0i_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Ui()
{
  {
    init_simple_test("aI_BFu0i_Ui");
    static aI_BFu0i_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Ui.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Ui(Test_aI_BFu0i_Ui, "aI_BFu0i_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Ul()
{
  {
    init_simple_test("aI_BFu0i_Ul");
    static aI_BFu0i_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Ul.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Ul(Test_aI_BFu0i_Ul, "aI_BFu0i_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Us()
{
  {
    init_simple_test("aI_BFu0i_Us");
    static aI_BFu0i_Us lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Us.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Us(Test_aI_BFu0i_Us, "aI_BFu0i_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0i_Vp()
{
  {
    init_simple_test("aI_BFu0i_Vp");
    static aI_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aI_BFu0i_Vp.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0i_Vp(Test_aI_BFu0i_Vp, "aI_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll()
{
  {
    init_simple_test("aI_BFu0ll");
    static aI_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll(Test_aI_BFu0ll, "aI_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu0c()
{
  {
    init_simple_test("aI_BFu0ll_BFu0c");
    static aI_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu0c(Test_aI_BFu0ll_BFu0c, "aI_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu0i()
{
  {
    init_simple_test("aI_BFu0ll_BFu0i");
    static aI_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu0i(Test_aI_BFu0ll_BFu0i, "aI_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu0ll");
    static aI_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu0ll(Test_aI_BFu0ll_BFu0ll, "aI_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu0s()
{
  {
    init_simple_test("aI_BFu0ll_BFu0s");
    static aI_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu0s(Test_aI_BFu0ll_BFu0s, "aI_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu15i()
{
  {
    init_simple_test("aI_BFu0ll_BFu15i");
    static aI_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aI_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aI_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu15i(Test_aI_BFu0ll_BFu15i, "aI_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu15ll");
    static aI_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aI_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aI_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu15ll(Test_aI_BFu0ll_BFu15ll, "aI_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu15s()
{
  {
    init_simple_test("aI_BFu0ll_BFu15s");
    static aI_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aI_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aI_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu15s(Test_aI_BFu0ll_BFu15s, "aI_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu16i()
{
  {
    init_simple_test("aI_BFu0ll_BFu16i");
    static aI_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aI_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aI_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu16i(Test_aI_BFu0ll_BFu16i, "aI_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu16ll");
    static aI_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aI_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aI_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu16ll(Test_aI_BFu0ll_BFu16ll, "aI_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu16s()
{
  {
    init_simple_test("aI_BFu0ll_BFu16s");
    static aI_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aI_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aI_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu16s(Test_aI_BFu0ll_BFu16s, "aI_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu17i()
{
  {
    init_simple_test("aI_BFu0ll_BFu17i");
    static aI_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aI_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aI_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aI_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu17i(Test_aI_BFu0ll_BFu17i, "aI_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu17ll");
    static aI_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aI_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aI_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aI_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu17ll(Test_aI_BFu0ll_BFu17ll, "aI_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu1c()
{
  {
    init_simple_test("aI_BFu0ll_BFu1c");
    static aI_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aI_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu1c(Test_aI_BFu0ll_BFu1c, "aI_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu1i()
{
  {
    init_simple_test("aI_BFu0ll_BFu1i");
    static aI_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aI_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu1i(Test_aI_BFu0ll_BFu1i, "aI_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu1ll");
    static aI_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aI_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu1ll(Test_aI_BFu0ll_BFu1ll, "aI_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu1s()
{
  {
    init_simple_test("aI_BFu0ll_BFu1s");
    static aI_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aI_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu1s(Test_aI_BFu0ll_BFu1s, "aI_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu31i()
{
  {
    init_simple_test("aI_BFu0ll_BFu31i");
    static aI_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aI_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aI_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu31i(Test_aI_BFu0ll_BFu31i, "aI_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu31ll");
    static aI_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aI_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aI_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu31ll(Test_aI_BFu0ll_BFu31ll, "aI_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu32i()
{
  {
    init_simple_test("aI_BFu0ll_BFu32i");
    static aI_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aI_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aI_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu32i(Test_aI_BFu0ll_BFu32i, "aI_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu32ll");
    static aI_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aI_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aI_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu32ll(Test_aI_BFu0ll_BFu32ll, "aI_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu33()
{
  {
    init_simple_test("aI_BFu0ll_BFu33");
    static aI_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aI_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aI_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aI_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu33(Test_aI_BFu0ll_BFu33, "aI_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu7c()
{
  {
    init_simple_test("aI_BFu0ll_BFu7c");
    static aI_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aI_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aI_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu7c(Test_aI_BFu0ll_BFu7c, "aI_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu7i()
{
  {
    init_simple_test("aI_BFu0ll_BFu7i");
    static aI_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aI_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aI_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu7i(Test_aI_BFu0ll_BFu7i, "aI_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu7ll");
    static aI_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aI_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aI_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu7ll(Test_aI_BFu0ll_BFu7ll, "aI_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu7s()
{
  {
    init_simple_test("aI_BFu0ll_BFu7s");
    static aI_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aI_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aI_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu7s(Test_aI_BFu0ll_BFu7s, "aI_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu8c()
{
  {
    init_simple_test("aI_BFu0ll_BFu8c");
    static aI_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aI_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aI_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu8c(Test_aI_BFu0ll_BFu8c, "aI_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu8i()
{
  {
    init_simple_test("aI_BFu0ll_BFu8i");
    static aI_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aI_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aI_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu8i(Test_aI_BFu0ll_BFu8i, "aI_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu8ll");
    static aI_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aI_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aI_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu8ll(Test_aI_BFu0ll_BFu8ll, "aI_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu8s()
{
  {
    init_simple_test("aI_BFu0ll_BFu8s");
    static aI_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aI_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aI_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu8s(Test_aI_BFu0ll_BFu8s, "aI_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu9i()
{
  {
    init_simple_test("aI_BFu0ll_BFu9i");
    static aI_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aI_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aI_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu9i(Test_aI_BFu0ll_BFu9i, "aI_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aI_BFu0ll_BFu9ll");
    static aI_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aI_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aI_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu9ll(Test_aI_BFu0ll_BFu9ll, "aI_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_BFu9s()
{
  {
    init_simple_test("aI_BFu0ll_BFu9s");
    static aI_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aI_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aI_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_BFu9s(Test_aI_BFu0ll_BFu9s, "aI_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_C()
{
  {
    init_simple_test("aI_BFu0ll_C");
    static aI_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_C(Test_aI_BFu0ll_C, "aI_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_D()
{
  {
    init_simple_test("aI_BFu0ll_D");
    static aI_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_D(Test_aI_BFu0ll_D, "aI_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_F()
{
  {
    init_simple_test("aI_BFu0ll_F");
    static aI_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_F(Test_aI_BFu0ll_F, "aI_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_I()
{
  {
    init_simple_test("aI_BFu0ll_I");
    static aI_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_I(Test_aI_BFu0ll_I, "aI_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Ip()
{
  {
    init_simple_test("aI_BFu0ll_Ip");
    static aI_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aI_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Ip(Test_aI_BFu0ll_Ip, "aI_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_L()
{
  {
    init_simple_test("aI_BFu0ll_L");
    static aI_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_L(Test_aI_BFu0ll_L, "aI_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_S()
{
  {
    init_simple_test("aI_BFu0ll_S");
    static aI_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_S(Test_aI_BFu0ll_S, "aI_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Uc()
{
  {
    init_simple_test("aI_BFu0ll_Uc");
    static aI_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aI_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Uc(Test_aI_BFu0ll_Uc, "aI_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Ui()
{
  {
    init_simple_test("aI_BFu0ll_Ui");
    static aI_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Ui(Test_aI_BFu0ll_Ui, "aI_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Ul()
{
  {
    init_simple_test("aI_BFu0ll_Ul");
    static aI_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Ul(Test_aI_BFu0ll_Ul, "aI_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Us()
{
  {
    init_simple_test("aI_BFu0ll_Us");
    static aI_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aI_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Us(Test_aI_BFu0ll_Us, "aI_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0ll_Vp()
{
  {
    init_simple_test("aI_BFu0ll_Vp");
    static aI_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aI_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aI_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aI_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0ll_Vp(Test_aI_BFu0ll_Vp, "aI_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s()
{
  {
    init_simple_test("aI_BFu0s");
    static aI_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0s(Test_aI_BFu0s, "aI_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu0c()
{
  {
    init_simple_test("aI_BFu0s_BFu0c");
    static aI_BFu0s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu0c(Test_aI_BFu0s_BFu0c, "aI_BFu0s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu0i()
{
  {
    init_simple_test("aI_BFu0s_BFu0i");
    static aI_BFu0s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu0i(Test_aI_BFu0s_BFu0i, "aI_BFu0s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu0ll()
{
  {
    init_simple_test("aI_BFu0s_BFu0ll");
    static aI_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aI_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu0ll(Test_aI_BFu0s_BFu0ll, "aI_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu0s()
{
  {
    init_simple_test("aI_BFu0s_BFu0s");
    static aI_BFu0s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aI_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu0s(Test_aI_BFu0s_BFu0s, "aI_BFu0s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu15i()
{
  {
    init_simple_test("aI_BFu0s_BFu15i");
    static aI_BFu0s_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu15i(Test_aI_BFu0s_BFu15i, "aI_BFu0s_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu15ll()
{
  {
    init_simple_test("aI_BFu0s_BFu15ll");
    static aI_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu15ll(Test_aI_BFu0s_BFu15ll, "aI_BFu0s_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu15s()
{
  {
    init_simple_test("aI_BFu0s_BFu15s");
    static aI_BFu0s_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu15s(Test_aI_BFu0s_BFu15s, "aI_BFu0s_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu16i()
{
  {
    init_simple_test("aI_BFu0s_BFu16i");
    static aI_BFu0s_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu16i(Test_aI_BFu0s_BFu16i, "aI_BFu0s_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu16ll()
{
  {
    init_simple_test("aI_BFu0s_BFu16ll");
    static aI_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu16ll(Test_aI_BFu0s_BFu16ll, "aI_BFu0s_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu16s()
{
  {
    init_simple_test("aI_BFu0s_BFu16s");
    static aI_BFu0s_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu16s(Test_aI_BFu0s_BFu16s, "aI_BFu0s_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu17i()
{
  {
    init_simple_test("aI_BFu0s_BFu17i");
    static aI_BFu0s_BFu17i lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu17i(Test_aI_BFu0s_BFu17i, "aI_BFu0s_BFu17i", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu17ll()
{
  {
    init_simple_test("aI_BFu0s_BFu17ll");
    static aI_BFu0s_BFu17ll lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu17ll(Test_aI_BFu0s_BFu17ll, "aI_BFu0s_BFu17ll", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu1c()
{
  {
    init_simple_test("aI_BFu0s_BFu1c");
    static aI_BFu0s_BFu1c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu1c(Test_aI_BFu0s_BFu1c, "aI_BFu0s_BFu1c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu1i()
{
  {
    init_simple_test("aI_BFu0s_BFu1i");
    static aI_BFu0s_BFu1i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu1i(Test_aI_BFu0s_BFu1i, "aI_BFu0s_BFu1i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu1ll()
{
  {
    init_simple_test("aI_BFu0s_BFu1ll");
    static aI_BFu0s_BFu1ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu1ll(Test_aI_BFu0s_BFu1ll, "aI_BFu0s_BFu1ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu1s()
{
  {
    init_simple_test("aI_BFu0s_BFu1s");
    static aI_BFu0s_BFu1s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu1s(Test_aI_BFu0s_BFu1s, "aI_BFu0s_BFu1s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu31i()
{
  {
    init_simple_test("aI_BFu0s_BFu31i");
    static aI_BFu0s_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu31i(Test_aI_BFu0s_BFu31i, "aI_BFu0s_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu31ll()
{
  {
    init_simple_test("aI_BFu0s_BFu31ll");
    static aI_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu31ll(Test_aI_BFu0s_BFu31ll, "aI_BFu0s_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu32i()
{
  {
    init_simple_test("aI_BFu0s_BFu32i");
    static aI_BFu0s_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu32i(Test_aI_BFu0s_BFu32i, "aI_BFu0s_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu32ll()
{
  {
    init_simple_test("aI_BFu0s_BFu32ll");
    static aI_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu32ll(Test_aI_BFu0s_BFu32ll, "aI_BFu0s_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu33()
{
  {
    init_simple_test("aI_BFu0s_BFu33");
    static aI_BFu0s_BFu33 lv;
    check2(sizeof(lv), 9, "sizeof(aI_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu33(Test_aI_BFu0s_BFu33, "aI_BFu0s_BFu33", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu7c()
{
  {
    init_simple_test("aI_BFu0s_BFu7c");
    static aI_BFu0s_BFu7c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu7c(Test_aI_BFu0s_BFu7c, "aI_BFu0s_BFu7c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu7i()
{
  {
    init_simple_test("aI_BFu0s_BFu7i");
    static aI_BFu0s_BFu7i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu7i(Test_aI_BFu0s_BFu7i, "aI_BFu0s_BFu7i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu7ll()
{
  {
    init_simple_test("aI_BFu0s_BFu7ll");
    static aI_BFu0s_BFu7ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu7ll(Test_aI_BFu0s_BFu7ll, "aI_BFu0s_BFu7ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu7s()
{
  {
    init_simple_test("aI_BFu0s_BFu7s");
    static aI_BFu0s_BFu7s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu7s(Test_aI_BFu0s_BFu7s, "aI_BFu0s_BFu7s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu8c()
{
  {
    init_simple_test("aI_BFu0s_BFu8c");
    static aI_BFu0s_BFu8c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu8c(Test_aI_BFu0s_BFu8c, "aI_BFu0s_BFu8c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu8i()
{
  {
    init_simple_test("aI_BFu0s_BFu8i");
    static aI_BFu0s_BFu8i lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu8i(Test_aI_BFu0s_BFu8i, "aI_BFu0s_BFu8i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu8ll()
{
  {
    init_simple_test("aI_BFu0s_BFu8ll");
    static aI_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu8ll(Test_aI_BFu0s_BFu8ll, "aI_BFu0s_BFu8ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu8s()
{
  {
    init_simple_test("aI_BFu0s_BFu8s");
    static aI_BFu0s_BFu8s lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu8s(Test_aI_BFu0s_BFu8s, "aI_BFu0s_BFu8s", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu9i()
{
  {
    init_simple_test("aI_BFu0s_BFu9i");
    static aI_BFu0s_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu9i(Test_aI_BFu0s_BFu9i, "aI_BFu0s_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu9ll()
{
  {
    init_simple_test("aI_BFu0s_BFu9ll");
    static aI_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu9ll(Test_aI_BFu0s_BFu9ll, "aI_BFu0s_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_BFu9s()
{
  {
    init_simple_test("aI_BFu0s_BFu9s");
    static aI_BFu0s_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_BFu9s(Test_aI_BFu0s_BFu9s, "aI_BFu0s_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_C()
{
  {
    init_simple_test("aI_BFu0s_C");
    static aI_BFu0s_C lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_C.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_C(Test_aI_BFu0s_C, "aI_BFu0s_C", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_D()
{
  {
    init_simple_test("aI_BFu0s_D");
    static aI_BFu0s_D lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_D.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_D(Test_aI_BFu0s_D, "aI_BFu0s_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_F()
{
  {
    init_simple_test("aI_BFu0s_F");
    static aI_BFu0s_F lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_F.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_F(Test_aI_BFu0s_F, "aI_BFu0s_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_I()
{
  {
    init_simple_test("aI_BFu0s_I");
    static aI_BFu0s_I lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_I.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_I(Test_aI_BFu0s_I, "aI_BFu0s_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Ip()
{
  {
    init_simple_test("aI_BFu0s_Ip");
    static aI_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Ip.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Ip(Test_aI_BFu0s_Ip, "aI_BFu0s_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_L()
{
  {
    init_simple_test("aI_BFu0s_L");
    static aI_BFu0s_L lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_L.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_L(Test_aI_BFu0s_L, "aI_BFu0s_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_S()
{
  {
    init_simple_test("aI_BFu0s_S");
    static aI_BFu0s_S lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_S.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_S(Test_aI_BFu0s_S, "aI_BFu0s_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Uc()
{
  {
    init_simple_test("aI_BFu0s_Uc");
    static aI_BFu0s_Uc lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Uc.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Uc(Test_aI_BFu0s_Uc, "aI_BFu0s_Uc", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Ui()
{
  {
    init_simple_test("aI_BFu0s_Ui");
    static aI_BFu0s_Ui lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Ui.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Ui(Test_aI_BFu0s_Ui, "aI_BFu0s_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Ul()
{
  {
    init_simple_test("aI_BFu0s_Ul");
    static aI_BFu0s_Ul lv;
    check2(sizeof(lv), 12, "sizeof(aI_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Ul.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Ul(Test_aI_BFu0s_Ul, "aI_BFu0s_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Us()
{
  {
    init_simple_test("aI_BFu0s_Us");
    static aI_BFu0s_Us lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Us.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Us(Test_aI_BFu0s_Us, "aI_BFu0s_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu0s_Vp()
{
  {
    init_simple_test("aI_BFu0s_Vp");
    static aI_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aI_BFu0s_Vp.v1");
    check_field_offset(lv, v2, 4, "aI_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaI_BFu0s_Vp(Test_aI_BFu0s_Vp, "aI_BFu0s_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15i_BFu0c()
{
  {
    init_simple_test("aI_BFu15i_BFu0c");
    static aI_BFu15i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu15i_BFu0c(Test_aI_BFu15i_BFu0c, "aI_BFu15i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15i_BFu0i()
{
  {
    init_simple_test("aI_BFu15i_BFu0i");
    static aI_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu15i_BFu0i(Test_aI_BFu15i_BFu0i, "aI_BFu15i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15i_BFu0ll()
{
  {
    init_simple_test("aI_BFu15i_BFu0ll");
    static aI_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu15i_BFu0ll(Test_aI_BFu15i_BFu0ll, "aI_BFu15i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15i_BFu0s()
{
  {
    init_simple_test("aI_BFu15i_BFu0s");
    static aI_BFu15i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu15i_BFu0s(Test_aI_BFu15i_BFu0s, "aI_BFu15i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15ll_BFu0c()
{
  {
    init_simple_test("aI_BFu15ll_BFu0c");
    static aI_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu15ll_BFu0c(Test_aI_BFu15ll_BFu0c, "aI_BFu15ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15ll_BFu0i()
{
  {
    init_simple_test("aI_BFu15ll_BFu0i");
    static aI_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu15ll_BFu0i(Test_aI_BFu15ll_BFu0i, "aI_BFu15ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu15ll_BFu0ll");
    static aI_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu15ll_BFu0ll(Test_aI_BFu15ll_BFu0ll, "aI_BFu15ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15ll_BFu0s()
{
  {
    init_simple_test("aI_BFu15ll_BFu0s");
    static aI_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu15ll_BFu0s(Test_aI_BFu15ll_BFu0s, "aI_BFu15ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15s_BFu0c()
{
  {
    init_simple_test("aI_BFu15s_BFu0c");
    static aI_BFu15s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu15s_BFu0c(Test_aI_BFu15s_BFu0c, "aI_BFu15s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15s_BFu0i()
{
  {
    init_simple_test("aI_BFu15s_BFu0i");
    static aI_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu15s_BFu0i(Test_aI_BFu15s_BFu0i, "aI_BFu15s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15s_BFu0ll()
{
  {
    init_simple_test("aI_BFu15s_BFu0ll");
    static aI_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu15s_BFu0ll(Test_aI_BFu15s_BFu0ll, "aI_BFu15s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu15s_BFu0s()
{
  {
    init_simple_test("aI_BFu15s_BFu0s");
    static aI_BFu15s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "aI_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "aI_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu15s_BFu0s(Test_aI_BFu15s_BFu0s, "aI_BFu15s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16i_BFu0c()
{
  {
    init_simple_test("aI_BFu16i_BFu0c");
    static aI_BFu16i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu16i_BFu0c(Test_aI_BFu16i_BFu0c, "aI_BFu16i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16i_BFu0i()
{
  {
    init_simple_test("aI_BFu16i_BFu0i");
    static aI_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu16i_BFu0i(Test_aI_BFu16i_BFu0i, "aI_BFu16i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16i_BFu0ll()
{
  {
    init_simple_test("aI_BFu16i_BFu0ll");
    static aI_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu16i_BFu0ll(Test_aI_BFu16i_BFu0ll, "aI_BFu16i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16i_BFu0s()
{
  {
    init_simple_test("aI_BFu16i_BFu0s");
    static aI_BFu16i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu16i_BFu0s(Test_aI_BFu16i_BFu0s, "aI_BFu16i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16ll_BFu0c()
{
  {
    init_simple_test("aI_BFu16ll_BFu0c");
    static aI_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu16ll_BFu0c(Test_aI_BFu16ll_BFu0c, "aI_BFu16ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16ll_BFu0i()
{
  {
    init_simple_test("aI_BFu16ll_BFu0i");
    static aI_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu16ll_BFu0i(Test_aI_BFu16ll_BFu0i, "aI_BFu16ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu16ll_BFu0ll");
    static aI_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu16ll_BFu0ll(Test_aI_BFu16ll_BFu0ll, "aI_BFu16ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16ll_BFu0s()
{
  {
    init_simple_test("aI_BFu16ll_BFu0s");
    static aI_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu16ll_BFu0s(Test_aI_BFu16ll_BFu0s, "aI_BFu16ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16s_BFu0c()
{
  {
    init_simple_test("aI_BFu16s_BFu0c");
    static aI_BFu16s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu16s_BFu0c(Test_aI_BFu16s_BFu0c, "aI_BFu16s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16s_BFu0i()
{
  {
    init_simple_test("aI_BFu16s_BFu0i");
    static aI_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu16s_BFu0i(Test_aI_BFu16s_BFu0i, "aI_BFu16s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16s_BFu0ll()
{
  {
    init_simple_test("aI_BFu16s_BFu0ll");
    static aI_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu16s_BFu0ll(Test_aI_BFu16s_BFu0ll, "aI_BFu16s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu16s_BFu0s()
{
  {
    init_simple_test("aI_BFu16s_BFu0s");
    static aI_BFu16s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "aI_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "aI_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu16s_BFu0s(Test_aI_BFu16s_BFu0s, "aI_BFu16s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17i_BFu0c()
{
  {
    init_simple_test("aI_BFu17i_BFu0c");
    static aI_BFu17i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu17i_BFu0c(Test_aI_BFu17i_BFu0c, "aI_BFu17i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17i_BFu0i()
{
  {
    init_simple_test("aI_BFu17i_BFu0i");
    static aI_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu17i_BFu0i(Test_aI_BFu17i_BFu0i, "aI_BFu17i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17i_BFu0ll()
{
  {
    init_simple_test("aI_BFu17i_BFu0ll");
    static aI_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu17i_BFu0ll(Test_aI_BFu17i_BFu0ll, "aI_BFu17i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17i_BFu0s()
{
  {
    init_simple_test("aI_BFu17i_BFu0s");
    static aI_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu17i_BFu0s(Test_aI_BFu17i_BFu0s, "aI_BFu17i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17ll_BFu0c()
{
  {
    init_simple_test("aI_BFu17ll_BFu0c");
    static aI_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aI_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu17ll_BFu0c(Test_aI_BFu17ll_BFu0c, "aI_BFu17ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17ll_BFu0i()
{
  {
    init_simple_test("aI_BFu17ll_BFu0i");
    static aI_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu17ll_BFu0i(Test_aI_BFu17ll_BFu0i, "aI_BFu17ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu17ll_BFu0ll");
    static aI_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu17ll_BFu0ll(Test_aI_BFu17ll_BFu0ll, "aI_BFu17ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu17ll_BFu0s()
{
  {
    init_simple_test("aI_BFu17ll_BFu0s");
    static aI_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "aI_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "aI_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu17ll_BFu0s(Test_aI_BFu17ll_BFu0s, "aI_BFu17ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1c_BFu0c()
{
  {
    init_simple_test("aI_BFu1c_BFu0c");
    static aI_BFu1c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu1c_BFu0c(Test_aI_BFu1c_BFu0c, "aI_BFu1c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1c_BFu0i()
{
  {
    init_simple_test("aI_BFu1c_BFu0i");
    static aI_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu1c_BFu0i(Test_aI_BFu1c_BFu0i, "aI_BFu1c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1c_BFu0ll()
{
  {
    init_simple_test("aI_BFu1c_BFu0ll");
    static aI_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu1c_BFu0ll(Test_aI_BFu1c_BFu0ll, "aI_BFu1c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1c_BFu0s()
{
  {
    init_simple_test("aI_BFu1c_BFu0s");
    static aI_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu1c_BFu0s(Test_aI_BFu1c_BFu0s, "aI_BFu1c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1i_BFu0c()
{
  {
    init_simple_test("aI_BFu1i_BFu0c");
    static aI_BFu1i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu1i_BFu0c(Test_aI_BFu1i_BFu0c, "aI_BFu1i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1i_BFu0i()
{
  {
    init_simple_test("aI_BFu1i_BFu0i");
    static aI_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu1i_BFu0i(Test_aI_BFu1i_BFu0i, "aI_BFu1i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1i_BFu0ll()
{
  {
    init_simple_test("aI_BFu1i_BFu0ll");
    static aI_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu1i_BFu0ll(Test_aI_BFu1i_BFu0ll, "aI_BFu1i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1i_BFu0s()
{
  {
    init_simple_test("aI_BFu1i_BFu0s");
    static aI_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu1i_BFu0s(Test_aI_BFu1i_BFu0s, "aI_BFu1i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1ll_BFu0c()
{
  {
    init_simple_test("aI_BFu1ll_BFu0c");
    static aI_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu1ll_BFu0c(Test_aI_BFu1ll_BFu0c, "aI_BFu1ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1ll_BFu0i()
{
  {
    init_simple_test("aI_BFu1ll_BFu0i");
    static aI_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu1ll_BFu0i(Test_aI_BFu1ll_BFu0i, "aI_BFu1ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu1ll_BFu0ll");
    static aI_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu1ll_BFu0ll(Test_aI_BFu1ll_BFu0ll, "aI_BFu1ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1ll_BFu0s()
{
  {
    init_simple_test("aI_BFu1ll_BFu0s");
    static aI_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu1ll_BFu0s(Test_aI_BFu1ll_BFu0s, "aI_BFu1ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1s_BFu0c()
{
  {
    init_simple_test("aI_BFu1s_BFu0c");
    static aI_BFu1s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu1s_BFu0c(Test_aI_BFu1s_BFu0c, "aI_BFu1s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1s_BFu0i()
{
  {
    init_simple_test("aI_BFu1s_BFu0i");
    static aI_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu1s_BFu0i(Test_aI_BFu1s_BFu0i, "aI_BFu1s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1s_BFu0ll()
{
  {
    init_simple_test("aI_BFu1s_BFu0ll");
    static aI_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu1s_BFu0ll(Test_aI_BFu1s_BFu0ll, "aI_BFu1s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu1s_BFu0s()
{
  {
    init_simple_test("aI_BFu1s_BFu0s");
    static aI_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "aI_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu1s_BFu0s(Test_aI_BFu1s_BFu0s, "aI_BFu1s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31i_BFu0c()
{
  {
    init_simple_test("aI_BFu31i_BFu0c");
    static aI_BFu31i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu31i_BFu0c(Test_aI_BFu31i_BFu0c, "aI_BFu31i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31i_BFu0i()
{
  {
    init_simple_test("aI_BFu31i_BFu0i");
    static aI_BFu31i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu31i_BFu0i(Test_aI_BFu31i_BFu0i, "aI_BFu31i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31i_BFu0ll()
{
  {
    init_simple_test("aI_BFu31i_BFu0ll");
    static aI_BFu31i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu31i_BFu0ll(Test_aI_BFu31i_BFu0ll, "aI_BFu31i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31i_BFu0s()
{
  {
    init_simple_test("aI_BFu31i_BFu0s");
    static aI_BFu31i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu31i_BFu0s(Test_aI_BFu31i_BFu0s, "aI_BFu31i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31ll_BFu0c()
{
  {
    init_simple_test("aI_BFu31ll_BFu0c");
    static aI_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu31ll_BFu0c(Test_aI_BFu31ll_BFu0c, "aI_BFu31ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31ll_BFu0i()
{
  {
    init_simple_test("aI_BFu31ll_BFu0i");
    static aI_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu31ll_BFu0i(Test_aI_BFu31ll_BFu0i, "aI_BFu31ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu31ll_BFu0ll");
    static aI_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu31ll_BFu0ll(Test_aI_BFu31ll_BFu0ll, "aI_BFu31ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu31ll_BFu0s()
{
  {
    init_simple_test("aI_BFu31ll_BFu0s");
    static aI_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "aI_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "aI_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu31ll_BFu0s(Test_aI_BFu31ll_BFu0s, "aI_BFu31ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32i_BFu0c()
{
  {
    init_simple_test("aI_BFu32i_BFu0c");
    static aI_BFu32i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu32i_BFu0c(Test_aI_BFu32i_BFu0c, "aI_BFu32i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32i_BFu0i()
{
  {
    init_simple_test("aI_BFu32i_BFu0i");
    static aI_BFu32i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu32i_BFu0i(Test_aI_BFu32i_BFu0i, "aI_BFu32i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32i_BFu0ll()
{
  {
    init_simple_test("aI_BFu32i_BFu0ll");
    static aI_BFu32i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu32i_BFu0ll(Test_aI_BFu32i_BFu0ll, "aI_BFu32i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32i_BFu0s()
{
  {
    init_simple_test("aI_BFu32i_BFu0s");
    static aI_BFu32i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu32i_BFu0s(Test_aI_BFu32i_BFu0s, "aI_BFu32i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32ll_BFu0c()
{
  {
    init_simple_test("aI_BFu32ll_BFu0c");
    static aI_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu32ll_BFu0c(Test_aI_BFu32ll_BFu0c, "aI_BFu32ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32ll_BFu0i()
{
  {
    init_simple_test("aI_BFu32ll_BFu0i");
    static aI_BFu32ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu32ll_BFu0i(Test_aI_BFu32ll_BFu0i, "aI_BFu32ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu32ll_BFu0ll");
    static aI_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu32ll_BFu0ll(Test_aI_BFu32ll_BFu0ll, "aI_BFu32ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu32ll_BFu0s()
{
  {
    init_simple_test("aI_BFu32ll_BFu0s");
    static aI_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "aI_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "aI_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu32ll_BFu0s(Test_aI_BFu32ll_BFu0s, "aI_BFu32ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu33_BFu0c()
{
  {
    init_simple_test("aI_BFu33_BFu0c");
    static aI_BFu33_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aI_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu33_BFu0c(Test_aI_BFu33_BFu0c, "aI_BFu33_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu33_BFu0i()
{
  {
    init_simple_test("aI_BFu33_BFu0i");
    static aI_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aI_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu33_BFu0i(Test_aI_BFu33_BFu0i, "aI_BFu33_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu33_BFu0ll()
{
  {
    init_simple_test("aI_BFu33_BFu0ll");
    static aI_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu33_BFu0ll(Test_aI_BFu33_BFu0ll, "aI_BFu33_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu33_BFu0s()
{
  {
    init_simple_test("aI_BFu33_BFu0s");
    static aI_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aI_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "aI_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "aI_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu33_BFu0s(Test_aI_BFu33_BFu0s, "aI_BFu33_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7c_BFu0c()
{
  {
    init_simple_test("aI_BFu7c_BFu0c");
    static aI_BFu7c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu7c_BFu0c(Test_aI_BFu7c_BFu0c, "aI_BFu7c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7c_BFu0i()
{
  {
    init_simple_test("aI_BFu7c_BFu0i");
    static aI_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu7c_BFu0i(Test_aI_BFu7c_BFu0i, "aI_BFu7c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7c_BFu0ll()
{
  {
    init_simple_test("aI_BFu7c_BFu0ll");
    static aI_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu7c_BFu0ll(Test_aI_BFu7c_BFu0ll, "aI_BFu7c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7c_BFu0s()
{
  {
    init_simple_test("aI_BFu7c_BFu0s");
    static aI_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu7c_BFu0s(Test_aI_BFu7c_BFu0s, "aI_BFu7c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7i_BFu0c()
{
  {
    init_simple_test("aI_BFu7i_BFu0c");
    static aI_BFu7i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu7i_BFu0c(Test_aI_BFu7i_BFu0c, "aI_BFu7i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7i_BFu0i()
{
  {
    init_simple_test("aI_BFu7i_BFu0i");
    static aI_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu7i_BFu0i(Test_aI_BFu7i_BFu0i, "aI_BFu7i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7i_BFu0ll()
{
  {
    init_simple_test("aI_BFu7i_BFu0ll");
    static aI_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu7i_BFu0ll(Test_aI_BFu7i_BFu0ll, "aI_BFu7i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7i_BFu0s()
{
  {
    init_simple_test("aI_BFu7i_BFu0s");
    static aI_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu7i_BFu0s(Test_aI_BFu7i_BFu0s, "aI_BFu7i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7ll_BFu0c()
{
  {
    init_simple_test("aI_BFu7ll_BFu0c");
    static aI_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu7ll_BFu0c(Test_aI_BFu7ll_BFu0c, "aI_BFu7ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7ll_BFu0i()
{
  {
    init_simple_test("aI_BFu7ll_BFu0i");
    static aI_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu7ll_BFu0i(Test_aI_BFu7ll_BFu0i, "aI_BFu7ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu7ll_BFu0ll");
    static aI_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu7ll_BFu0ll(Test_aI_BFu7ll_BFu0ll, "aI_BFu7ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7ll_BFu0s()
{
  {
    init_simple_test("aI_BFu7ll_BFu0s");
    static aI_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu7ll_BFu0s(Test_aI_BFu7ll_BFu0s, "aI_BFu7ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7s_BFu0c()
{
  {
    init_simple_test("aI_BFu7s_BFu0c");
    static aI_BFu7s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu7s_BFu0c(Test_aI_BFu7s_BFu0c, "aI_BFu7s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7s_BFu0i()
{
  {
    init_simple_test("aI_BFu7s_BFu0i");
    static aI_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu7s_BFu0i(Test_aI_BFu7s_BFu0i, "aI_BFu7s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7s_BFu0ll()
{
  {
    init_simple_test("aI_BFu7s_BFu0ll");
    static aI_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu7s_BFu0ll(Test_aI_BFu7s_BFu0ll, "aI_BFu7s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu7s_BFu0s()
{
  {
    init_simple_test("aI_BFu7s_BFu0s");
    static aI_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "aI_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "aI_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu7s_BFu0s(Test_aI_BFu7s_BFu0s, "aI_BFu7s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8c_BFu0c()
{
  {
    init_simple_test("aI_BFu8c_BFu0c");
    static aI_BFu8c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8c_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu8c_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu8c_BFu0c(Test_aI_BFu8c_BFu0c, "aI_BFu8c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8c_BFu0i()
{
  {
    init_simple_test("aI_BFu8c_BFu0i");
    static aI_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8c_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu8c_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu8c_BFu0i(Test_aI_BFu8c_BFu0i, "aI_BFu8c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8c_BFu0ll()
{
  {
    init_simple_test("aI_BFu8c_BFu0ll");
    static aI_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu8c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu8c_BFu0ll(Test_aI_BFu8c_BFu0ll, "aI_BFu8c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8c_BFu0s()
{
  {
    init_simple_test("aI_BFu8c_BFu0s");
    static aI_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8c_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu8c_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu8c_BFu0s(Test_aI_BFu8c_BFu0s, "aI_BFu8c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8i_BFu0c()
{
  {
    init_simple_test("aI_BFu8i_BFu0c");
    static aI_BFu8i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu8i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu8i_BFu0c(Test_aI_BFu8i_BFu0c, "aI_BFu8i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8i_BFu0i()
{
  {
    init_simple_test("aI_BFu8i_BFu0i");
    static aI_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu8i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu8i_BFu0i(Test_aI_BFu8i_BFu0i, "aI_BFu8i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8i_BFu0ll()
{
  {
    init_simple_test("aI_BFu8i_BFu0ll");
    static aI_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu8i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu8i_BFu0ll(Test_aI_BFu8i_BFu0ll, "aI_BFu8i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8i_BFu0s()
{
  {
    init_simple_test("aI_BFu8i_BFu0s");
    static aI_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu8i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu8i_BFu0s(Test_aI_BFu8i_BFu0s, "aI_BFu8i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8ll_BFu0c()
{
  {
    init_simple_test("aI_BFu8ll_BFu0c");
    static aI_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu8ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu8ll_BFu0c(Test_aI_BFu8ll_BFu0c, "aI_BFu8ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8ll_BFu0i()
{
  {
    init_simple_test("aI_BFu8ll_BFu0i");
    static aI_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu8ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu8ll_BFu0i(Test_aI_BFu8ll_BFu0i, "aI_BFu8ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu8ll_BFu0ll");
    static aI_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu8ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu8ll_BFu0ll(Test_aI_BFu8ll_BFu0ll, "aI_BFu8ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8ll_BFu0s()
{
  {
    init_simple_test("aI_BFu8ll_BFu0s");
    static aI_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu8ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu8ll_BFu0s(Test_aI_BFu8ll_BFu0s, "aI_BFu8ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8s_BFu0c()
{
  {
    init_simple_test("aI_BFu8s_BFu0c");
    static aI_BFu8s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu8s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu8s_BFu0c(Test_aI_BFu8s_BFu0c, "aI_BFu8s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8s_BFu0i()
{
  {
    init_simple_test("aI_BFu8s_BFu0i");
    static aI_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu8s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu8s_BFu0i(Test_aI_BFu8s_BFu0i, "aI_BFu8s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8s_BFu0ll()
{
  {
    init_simple_test("aI_BFu8s_BFu0ll");
    static aI_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu8s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu8s_BFu0ll(Test_aI_BFu8s_BFu0ll, "aI_BFu8s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu8s_BFu0s()
{
  {
    init_simple_test("aI_BFu8s_BFu0s");
    static aI_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu8s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu8s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "aI_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "aI_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu8s_BFu0s(Test_aI_BFu8s_BFu0s, "aI_BFu8s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9i_BFu0c()
{
  {
    init_simple_test("aI_BFu9i_BFu0c");
    static aI_BFu9i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9i_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu9i_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu9i_BFu0c(Test_aI_BFu9i_BFu0c, "aI_BFu9i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9i_BFu0i()
{
  {
    init_simple_test("aI_BFu9i_BFu0i");
    static aI_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9i_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu9i_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu9i_BFu0i(Test_aI_BFu9i_BFu0i, "aI_BFu9i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9i_BFu0ll()
{
  {
    init_simple_test("aI_BFu9i_BFu0ll");
    static aI_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu9i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu9i_BFu0ll(Test_aI_BFu9i_BFu0ll, "aI_BFu9i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9i_BFu0s()
{
  {
    init_simple_test("aI_BFu9i_BFu0s");
    static aI_BFu9i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9i_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu9i_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu9i_BFu0s(Test_aI_BFu9i_BFu0s, "aI_BFu9i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9ll_BFu0c()
{
  {
    init_simple_test("aI_BFu9ll_BFu0c");
    static aI_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu9ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu9ll_BFu0c(Test_aI_BFu9ll_BFu0c, "aI_BFu9ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9ll_BFu0i()
{
  {
    init_simple_test("aI_BFu9ll_BFu0i");
    static aI_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu9ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu9ll_BFu0i(Test_aI_BFu9ll_BFu0i, "aI_BFu9ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aI_BFu9ll_BFu0ll");
    static aI_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu9ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu9ll_BFu0ll(Test_aI_BFu9ll_BFu0ll, "aI_BFu9ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9ll_BFu0s()
{
  {
    init_simple_test("aI_BFu9ll_BFu0s");
    static aI_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu9ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu9ll_BFu0s(Test_aI_BFu9ll_BFu0s, "aI_BFu9ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9s_BFu0c()
{
  {
    init_simple_test("aI_BFu9s_BFu0c");
    static aI_BFu9s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9s_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_BFu9s_BFu0c.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaI_BFu9s_BFu0c(Test_aI_BFu9s_BFu0c, "aI_BFu9s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9s_BFu0i()
{
  {
    init_simple_test("aI_BFu9s_BFu0i");
    static aI_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9s_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_BFu9s_BFu0i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaI_BFu9s_BFu0i(Test_aI_BFu9s_BFu0i, "aI_BFu9s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9s_BFu0ll()
{
  {
    init_simple_test("aI_BFu9s_BFu0ll");
    static aI_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_BFu9s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaI_BFu9s_BFu0ll(Test_aI_BFu9s_BFu0ll, "aI_BFu9s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_BFu9s_BFu0s()
{
  {
    init_simple_test("aI_BFu9s_BFu0s");
    static aI_BFu9s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_BFu9s_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_BFu9s_BFu0s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "aI_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "aI_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaI_BFu9s_BFu0s(Test_aI_BFu9s_BFu0s, "aI_BFu9s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_C_BFu0c()
{
  {
    init_simple_test("aI_C_BFu0c");
    static aI_C_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_C_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_C_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_C_BFu0c(Test_aI_C_BFu0c, "aI_C_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_C_BFu0i()
{
  {
    init_simple_test("aI_C_BFu0i");
    static aI_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_C_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_C_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_C_BFu0i(Test_aI_C_BFu0i, "aI_C_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_C_BFu0ll()
{
  {
    init_simple_test("aI_C_BFu0ll");
    static aI_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_C_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_C_BFu0ll(Test_aI_C_BFu0ll, "aI_C_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_C_BFu0s()
{
  {
    init_simple_test("aI_C_BFu0s");
    static aI_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_C_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_C_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_C_BFu0s(Test_aI_C_BFu0s, "aI_C_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_D_BFu0c()
{
  {
    init_simple_test("aI_D_BFu0c");
    static aI_D_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aI_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_D_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_D_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_D_BFu0c(Test_aI_D_BFu0c, "aI_D_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_D_BFu0i()
{
  {
    init_simple_test("aI_D_BFu0i");
    static aI_D_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aI_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_D_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_D_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_D_BFu0i(Test_aI_D_BFu0i, "aI_D_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_D_BFu0ll()
{
  {
    init_simple_test("aI_D_BFu0ll");
    static aI_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_D_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_D_BFu0ll(Test_aI_D_BFu0ll, "aI_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_D_BFu0s()
{
  {
    init_simple_test("aI_D_BFu0s");
    static aI_D_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aI_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_D_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_D_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_D_BFu0s(Test_aI_D_BFu0s, "aI_D_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_F_BFu0c()
{
  {
    init_simple_test("aI_F_BFu0c");
    static aI_F_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_F_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_F_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_F_BFu0c(Test_aI_F_BFu0c, "aI_F_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_F_BFu0i()
{
  {
    init_simple_test("aI_F_BFu0i");
    static aI_F_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_F_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_F_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_F_BFu0i(Test_aI_F_BFu0i, "aI_F_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_F_BFu0ll()
{
  {
    init_simple_test("aI_F_BFu0ll");
    static aI_F_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_F_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_F_BFu0ll(Test_aI_F_BFu0ll, "aI_F_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_F_BFu0s()
{
  {
    init_simple_test("aI_F_BFu0s");
    static aI_F_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_F_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_F_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_F_BFu0s(Test_aI_F_BFu0s, "aI_F_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_I_BFu0c()
{
  {
    init_simple_test("aI_I_BFu0c");
    static aI_I_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_I_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_I_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_I_BFu0c(Test_aI_I_BFu0c, "aI_I_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_I_BFu0i()
{
  {
    init_simple_test("aI_I_BFu0i");
    static aI_I_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_I_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_I_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_I_BFu0i(Test_aI_I_BFu0i, "aI_I_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_I_BFu0ll()
{
  {
    init_simple_test("aI_I_BFu0ll");
    static aI_I_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_I_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_I_BFu0ll(Test_aI_I_BFu0ll, "aI_I_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_I_BFu0s()
{
  {
    init_simple_test("aI_I_BFu0s");
    static aI_I_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_I_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_I_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_I_BFu0s(Test_aI_I_BFu0s, "aI_I_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ip_BFu0c()
{
  {
    init_simple_test("aI_Ip_BFu0c");
    static aI_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Ip_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Ip_BFu0c(Test_aI_Ip_BFu0c, "aI_Ip_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ip_BFu0i()
{
  {
    init_simple_test("aI_Ip_BFu0i");
    static aI_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Ip_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Ip_BFu0i(Test_aI_Ip_BFu0i, "aI_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ip_BFu0ll()
{
  {
    init_simple_test("aI_Ip_BFu0ll");
    static aI_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aI_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Ip_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Ip_BFu0ll(Test_aI_Ip_BFu0ll, "aI_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ip_BFu0s()
{
  {
    init_simple_test("aI_Ip_BFu0s");
    static aI_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Ip_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Ip_BFu0s(Test_aI_Ip_BFu0s, "aI_Ip_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_L_BFu0c()
{
  {
    init_simple_test("aI_L_BFu0c");
    static aI_L_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aI_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_L_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_L_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_L_BFu0c(Test_aI_L_BFu0c, "aI_L_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_L_BFu0i()
{
  {
    init_simple_test("aI_L_BFu0i");
    static aI_L_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aI_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_L_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_L_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_L_BFu0i(Test_aI_L_BFu0i, "aI_L_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_L_BFu0ll()
{
  {
    init_simple_test("aI_L_BFu0ll");
    static aI_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_L_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_L_BFu0ll(Test_aI_L_BFu0ll, "aI_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_L_BFu0s()
{
  {
    init_simple_test("aI_L_BFu0s");
    static aI_L_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aI_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_L_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_L_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_L_BFu0s(Test_aI_L_BFu0s, "aI_L_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_S_BFu0c()
{
  {
    init_simple_test("aI_S_BFu0c");
    static aI_S_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_S_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_S_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_S_BFu0c(Test_aI_S_BFu0c, "aI_S_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_S_BFu0i()
{
  {
    init_simple_test("aI_S_BFu0i");
    static aI_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_S_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_S_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_S_BFu0i(Test_aI_S_BFu0i, "aI_S_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_S_BFu0ll()
{
  {
    init_simple_test("aI_S_BFu0ll");
    static aI_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_S_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_S_BFu0ll(Test_aI_S_BFu0ll, "aI_S_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_S_BFu0s()
{
  {
    init_simple_test("aI_S_BFu0s");
    static aI_S_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_S_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_S_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_S_BFu0s(Test_aI_S_BFu0s, "aI_S_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Uc_BFu0c()
{
  {
    init_simple_test("aI_Uc_BFu0c");
    static aI_Uc_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aI_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Uc_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Uc_BFu0c(Test_aI_Uc_BFu0c, "aI_Uc_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Uc_BFu0i()
{
  {
    init_simple_test("aI_Uc_BFu0i");
    static aI_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Uc_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Uc_BFu0i(Test_aI_Uc_BFu0i, "aI_Uc_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Uc_BFu0ll()
{
  {
    init_simple_test("aI_Uc_BFu0ll");
    static aI_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Uc_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Uc_BFu0ll(Test_aI_Uc_BFu0ll, "aI_Uc_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Uc_BFu0s()
{
  {
    init_simple_test("aI_Uc_BFu0s");
    static aI_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aI_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Uc_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Uc_BFu0s(Test_aI_Uc_BFu0s, "aI_Uc_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ui_BFu0c()
{
  {
    init_simple_test("aI_Ui_BFu0c");
    static aI_Ui_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aI_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Ui_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Ui_BFu0c(Test_aI_Ui_BFu0c, "aI_Ui_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ui_BFu0i()
{
  {
    init_simple_test("aI_Ui_BFu0i");
    static aI_Ui_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aI_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Ui_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Ui_BFu0i(Test_aI_Ui_BFu0i, "aI_Ui_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ui_BFu0ll()
{
  {
    init_simple_test("aI_Ui_BFu0ll");
    static aI_Ui_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aI_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Ui_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Ui_BFu0ll(Test_aI_Ui_BFu0ll, "aI_Ui_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ui_BFu0s()
{
  {
    init_simple_test("aI_Ui_BFu0s");
    static aI_Ui_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aI_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Ui_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Ui_BFu0s(Test_aI_Ui_BFu0s, "aI_Ui_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ul_BFu0c()
{
  {
    init_simple_test("aI_Ul_BFu0c");
    static aI_Ul_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aI_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Ul_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Ul_BFu0c(Test_aI_Ul_BFu0c, "aI_Ul_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ul_BFu0i()
{
  {
    init_simple_test("aI_Ul_BFu0i");
    static aI_Ul_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aI_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Ul_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Ul_BFu0i(Test_aI_Ul_BFu0i, "aI_Ul_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ul_BFu0ll()
{
  {
    init_simple_test("aI_Ul_BFu0ll");
    static aI_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aI_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Ul_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Ul_BFu0ll(Test_aI_Ul_BFu0ll, "aI_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Ul_BFu0s()
{
  {
    init_simple_test("aI_Ul_BFu0s");
    static aI_Ul_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aI_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Ul_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Ul_BFu0s(Test_aI_Ul_BFu0s, "aI_Ul_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Us_BFu0c()
{
  {
    init_simple_test("aI_Us_BFu0c");
    static aI_Us_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aI_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Us_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Us_BFu0c(Test_aI_Us_BFu0c, "aI_Us_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Us_BFu0i()
{
  {
    init_simple_test("aI_Us_BFu0i");
    static aI_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Us_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Us_BFu0i(Test_aI_Us_BFu0i, "aI_Us_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Us_BFu0ll()
{
  {
    init_simple_test("aI_Us_BFu0ll");
    static aI_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aI_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Us_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Us_BFu0ll(Test_aI_Us_BFu0ll, "aI_Us_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Us_BFu0s()
{
  {
    init_simple_test("aI_Us_BFu0s");
    static aI_Us_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aI_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Us_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Us_BFu0s(Test_aI_Us_BFu0s, "aI_Us_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Vp_BFu0c()
{
  {
    init_simple_test("aI_Vp_BFu0c");
    static aI_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "aI_Vp_BFu0c.v1");
    check_field_offset(lv, v2, 4, "aI_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaI_Vp_BFu0c(Test_aI_Vp_BFu0c, "aI_Vp_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Vp_BFu0i()
{
  {
    init_simple_test("aI_Vp_BFu0i");
    static aI_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "aI_Vp_BFu0i.v1");
    check_field_offset(lv, v2, 4, "aI_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaI_Vp_BFu0i(Test_aI_Vp_BFu0i, "aI_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Vp_BFu0ll()
{
  {
    init_simple_test("aI_Vp_BFu0ll");
    static aI_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aI_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aI_Vp_BFu0ll.v1");
    check_field_offset(lv, v2, 4, "aI_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaI_Vp_BFu0ll(Test_aI_Vp_BFu0ll, "aI_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aI_Vp_BFu0s()
{
  {
    init_simple_test("aI_Vp_BFu0s");
    static aI_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aI_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aI_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "aI_Vp_BFu0s.v1");
    check_field_offset(lv, v2, 4, "aI_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaI_Vp_BFu0s(Test_aI_Vp_BFu0s, "aI_Vp_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c()
{
  {
    init_simple_test("aIp_BFu0c");
    static aIp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c(Test_aIp_BFu0c, "aIp_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu0c()
{
  {
    init_simple_test("aIp_BFu0c_BFu0c");
    static aIp_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu0c(Test_aIp_BFu0c_BFu0c, "aIp_BFu0c_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu0i()
{
  {
    init_simple_test("aIp_BFu0c_BFu0i");
    static aIp_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu0i(Test_aIp_BFu0c_BFu0i, "aIp_BFu0c_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu0ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu0ll");
    static aIp_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu0ll(Test_aIp_BFu0c_BFu0ll, "aIp_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu0s()
{
  {
    init_simple_test("aIp_BFu0c_BFu0s");
    static aIp_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu0s(Test_aIp_BFu0c_BFu0s, "aIp_BFu0c_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu15i()
{
  {
    init_simple_test("aIp_BFu0c_BFu15i");
    static aIp_BFu0c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu15i(Test_aIp_BFu0c_BFu15i, "aIp_BFu0c_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu15ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu15ll");
    static aIp_BFu0c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu15ll(Test_aIp_BFu0c_BFu15ll, "aIp_BFu0c_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu15s()
{
  {
    init_simple_test("aIp_BFu0c_BFu15s");
    static aIp_BFu0c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu15s(Test_aIp_BFu0c_BFu15s, "aIp_BFu0c_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu16i()
{
  {
    init_simple_test("aIp_BFu0c_BFu16i");
    static aIp_BFu0c_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu16i(Test_aIp_BFu0c_BFu16i, "aIp_BFu0c_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu16ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu16ll");
    static aIp_BFu0c_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu16ll(Test_aIp_BFu0c_BFu16ll, "aIp_BFu0c_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu16s()
{
  {
    init_simple_test("aIp_BFu0c_BFu16s");
    static aIp_BFu0c_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu16s(Test_aIp_BFu0c_BFu16s, "aIp_BFu0c_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu17i()
{
  {
    init_simple_test("aIp_BFu0c_BFu17i");
    static aIp_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu17i(Test_aIp_BFu0c_BFu17i, "aIp_BFu0c_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu17ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu17ll");
    static aIp_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu17ll(Test_aIp_BFu0c_BFu17ll, "aIp_BFu0c_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu1c()
{
  {
    init_simple_test("aIp_BFu0c_BFu1c");
    static aIp_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu1c(Test_aIp_BFu0c_BFu1c, "aIp_BFu0c_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu1i()
{
  {
    init_simple_test("aIp_BFu0c_BFu1i");
    static aIp_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu1i(Test_aIp_BFu0c_BFu1i, "aIp_BFu0c_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu1ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu1ll");
    static aIp_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu1ll(Test_aIp_BFu0c_BFu1ll, "aIp_BFu0c_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu1s()
{
  {
    init_simple_test("aIp_BFu0c_BFu1s");
    static aIp_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu1s(Test_aIp_BFu0c_BFu1s, "aIp_BFu0c_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu31i()
{
  {
    init_simple_test("aIp_BFu0c_BFu31i");
    static aIp_BFu0c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu31i(Test_aIp_BFu0c_BFu31i, "aIp_BFu0c_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu31ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu31ll");
    static aIp_BFu0c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu31ll(Test_aIp_BFu0c_BFu31ll, "aIp_BFu0c_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu32i()
{
  {
    init_simple_test("aIp_BFu0c_BFu32i");
    static aIp_BFu0c_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu32i(Test_aIp_BFu0c_BFu32i, "aIp_BFu0c_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu32ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu32ll");
    static aIp_BFu0c_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu32ll(Test_aIp_BFu0c_BFu32ll, "aIp_BFu0c_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu33()
{
  {
    init_simple_test("aIp_BFu0c_BFu33");
    static aIp_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aIp_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu33(Test_aIp_BFu0c_BFu33, "aIp_BFu0c_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu7c()
{
  {
    init_simple_test("aIp_BFu0c_BFu7c");
    static aIp_BFu0c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu7c(Test_aIp_BFu0c_BFu7c, "aIp_BFu0c_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu7i()
{
  {
    init_simple_test("aIp_BFu0c_BFu7i");
    static aIp_BFu0c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu7i(Test_aIp_BFu0c_BFu7i, "aIp_BFu0c_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu7ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu7ll");
    static aIp_BFu0c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu7ll(Test_aIp_BFu0c_BFu7ll, "aIp_BFu0c_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu7s()
{
  {
    init_simple_test("aIp_BFu0c_BFu7s");
    static aIp_BFu0c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu7s(Test_aIp_BFu0c_BFu7s, "aIp_BFu0c_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu8c()
{
  {
    init_simple_test("aIp_BFu0c_BFu8c");
    static aIp_BFu0c_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu8c(Test_aIp_BFu0c_BFu8c, "aIp_BFu0c_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu8i()
{
  {
    init_simple_test("aIp_BFu0c_BFu8i");
    static aIp_BFu0c_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu8i(Test_aIp_BFu0c_BFu8i, "aIp_BFu0c_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu8ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu8ll");
    static aIp_BFu0c_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu8ll(Test_aIp_BFu0c_BFu8ll, "aIp_BFu0c_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu8s()
{
  {
    init_simple_test("aIp_BFu0c_BFu8s");
    static aIp_BFu0c_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu8s(Test_aIp_BFu0c_BFu8s, "aIp_BFu0c_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu9i()
{
  {
    init_simple_test("aIp_BFu0c_BFu9i");
    static aIp_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu9i(Test_aIp_BFu0c_BFu9i, "aIp_BFu0c_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu9ll()
{
  {
    init_simple_test("aIp_BFu0c_BFu9ll");
    static aIp_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu9ll(Test_aIp_BFu0c_BFu9ll, "aIp_BFu0c_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_BFu9s()
{
  {
    init_simple_test("aIp_BFu0c_BFu9s");
    static aIp_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_BFu9s(Test_aIp_BFu0c_BFu9s, "aIp_BFu0c_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_C()
{
  {
    init_simple_test("aIp_BFu0c_C");
    static aIp_BFu0c_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_C(Test_aIp_BFu0c_C, "aIp_BFu0c_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_D()
{
  {
    init_simple_test("aIp_BFu0c_D");
    static aIp_BFu0c_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_D(Test_aIp_BFu0c_D, "aIp_BFu0c_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_F()
{
  {
    init_simple_test("aIp_BFu0c_F");
    static aIp_BFu0c_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_F(Test_aIp_BFu0c_F, "aIp_BFu0c_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_I()
{
  {
    init_simple_test("aIp_BFu0c_I");
    static aIp_BFu0c_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_I(Test_aIp_BFu0c_I, "aIp_BFu0c_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Ip()
{
  {
    init_simple_test("aIp_BFu0c_Ip");
    static aIp_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Ip(Test_aIp_BFu0c_Ip, "aIp_BFu0c_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_L()
{
  {
    init_simple_test("aIp_BFu0c_L");
    static aIp_BFu0c_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_L(Test_aIp_BFu0c_L, "aIp_BFu0c_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_S()
{
  {
    init_simple_test("aIp_BFu0c_S");
    static aIp_BFu0c_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_S(Test_aIp_BFu0c_S, "aIp_BFu0c_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Uc()
{
  {
    init_simple_test("aIp_BFu0c_Uc");
    static aIp_BFu0c_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Uc(Test_aIp_BFu0c_Uc, "aIp_BFu0c_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Ui()
{
  {
    init_simple_test("aIp_BFu0c_Ui");
    static aIp_BFu0c_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Ui(Test_aIp_BFu0c_Ui, "aIp_BFu0c_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Ul()
{
  {
    init_simple_test("aIp_BFu0c_Ul");
    static aIp_BFu0c_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Ul(Test_aIp_BFu0c_Ul, "aIp_BFu0c_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Us()
{
  {
    init_simple_test("aIp_BFu0c_Us");
    static aIp_BFu0c_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Us(Test_aIp_BFu0c_Us, "aIp_BFu0c_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0c_Vp()
{
  {
    init_simple_test("aIp_BFu0c_Vp");
    static aIp_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aIp_BFu0c_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0c_Vp(Test_aIp_BFu0c_Vp, "aIp_BFu0c_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i()
{
  {
    init_simple_test("aIp_BFu0i");
    static aIp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i(Test_aIp_BFu0i, "aIp_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu0c()
{
  {
    init_simple_test("aIp_BFu0i_BFu0c");
    static aIp_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu0c(Test_aIp_BFu0i_BFu0c, "aIp_BFu0i_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu0i()
{
  {
    init_simple_test("aIp_BFu0i_BFu0i");
    static aIp_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu0i(Test_aIp_BFu0i_BFu0i, "aIp_BFu0i_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu0ll");
    static aIp_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu0ll(Test_aIp_BFu0i_BFu0ll, "aIp_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu0s()
{
  {
    init_simple_test("aIp_BFu0i_BFu0s");
    static aIp_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu0s(Test_aIp_BFu0i_BFu0s, "aIp_BFu0i_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu15i()
{
  {
    init_simple_test("aIp_BFu0i_BFu15i");
    static aIp_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu15i(Test_aIp_BFu0i_BFu15i, "aIp_BFu0i_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu15ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu15ll");
    static aIp_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu15ll(Test_aIp_BFu0i_BFu15ll, "aIp_BFu0i_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu15s()
{
  {
    init_simple_test("aIp_BFu0i_BFu15s");
    static aIp_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu15s(Test_aIp_BFu0i_BFu15s, "aIp_BFu0i_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu16i()
{
  {
    init_simple_test("aIp_BFu0i_BFu16i");
    static aIp_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu16i(Test_aIp_BFu0i_BFu16i, "aIp_BFu0i_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu16ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu16ll");
    static aIp_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu16ll(Test_aIp_BFu0i_BFu16ll, "aIp_BFu0i_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu16s()
{
  {
    init_simple_test("aIp_BFu0i_BFu16s");
    static aIp_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu16s(Test_aIp_BFu0i_BFu16s, "aIp_BFu0i_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu17i()
{
  {
    init_simple_test("aIp_BFu0i_BFu17i");
    static aIp_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu17i(Test_aIp_BFu0i_BFu17i, "aIp_BFu0i_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu17ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu17ll");
    static aIp_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu17ll(Test_aIp_BFu0i_BFu17ll, "aIp_BFu0i_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu1c()
{
  {
    init_simple_test("aIp_BFu0i_BFu1c");
    static aIp_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu1c(Test_aIp_BFu0i_BFu1c, "aIp_BFu0i_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu1i()
{
  {
    init_simple_test("aIp_BFu0i_BFu1i");
    static aIp_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu1i(Test_aIp_BFu0i_BFu1i, "aIp_BFu0i_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu1ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu1ll");
    static aIp_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu1ll(Test_aIp_BFu0i_BFu1ll, "aIp_BFu0i_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu1s()
{
  {
    init_simple_test("aIp_BFu0i_BFu1s");
    static aIp_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu1s(Test_aIp_BFu0i_BFu1s, "aIp_BFu0i_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu31i()
{
  {
    init_simple_test("aIp_BFu0i_BFu31i");
    static aIp_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu31i(Test_aIp_BFu0i_BFu31i, "aIp_BFu0i_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu31ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu31ll");
    static aIp_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu31ll(Test_aIp_BFu0i_BFu31ll, "aIp_BFu0i_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu32i()
{
  {
    init_simple_test("aIp_BFu0i_BFu32i");
    static aIp_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu32i(Test_aIp_BFu0i_BFu32i, "aIp_BFu0i_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu32ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu32ll");
    static aIp_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu32ll(Test_aIp_BFu0i_BFu32ll, "aIp_BFu0i_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu33()
{
  {
    init_simple_test("aIp_BFu0i_BFu33");
    static aIp_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aIp_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu33(Test_aIp_BFu0i_BFu33, "aIp_BFu0i_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu7c()
{
  {
    init_simple_test("aIp_BFu0i_BFu7c");
    static aIp_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu7c(Test_aIp_BFu0i_BFu7c, "aIp_BFu0i_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu7i()
{
  {
    init_simple_test("aIp_BFu0i_BFu7i");
    static aIp_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu7i(Test_aIp_BFu0i_BFu7i, "aIp_BFu0i_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu7ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu7ll");
    static aIp_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu7ll(Test_aIp_BFu0i_BFu7ll, "aIp_BFu0i_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu7s()
{
  {
    init_simple_test("aIp_BFu0i_BFu7s");
    static aIp_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu7s(Test_aIp_BFu0i_BFu7s, "aIp_BFu0i_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu8c()
{
  {
    init_simple_test("aIp_BFu0i_BFu8c");
    static aIp_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu8c(Test_aIp_BFu0i_BFu8c, "aIp_BFu0i_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu8i()
{
  {
    init_simple_test("aIp_BFu0i_BFu8i");
    static aIp_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu8i(Test_aIp_BFu0i_BFu8i, "aIp_BFu0i_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu8ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu8ll");
    static aIp_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu8ll(Test_aIp_BFu0i_BFu8ll, "aIp_BFu0i_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu8s()
{
  {
    init_simple_test("aIp_BFu0i_BFu8s");
    static aIp_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu8s(Test_aIp_BFu0i_BFu8s, "aIp_BFu0i_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu9i()
{
  {
    init_simple_test("aIp_BFu0i_BFu9i");
    static aIp_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu9i(Test_aIp_BFu0i_BFu9i, "aIp_BFu0i_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu9ll()
{
  {
    init_simple_test("aIp_BFu0i_BFu9ll");
    static aIp_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu9ll(Test_aIp_BFu0i_BFu9ll, "aIp_BFu0i_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_BFu9s()
{
  {
    init_simple_test("aIp_BFu0i_BFu9s");
    static aIp_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_BFu9s(Test_aIp_BFu0i_BFu9s, "aIp_BFu0i_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_C()
{
  {
    init_simple_test("aIp_BFu0i_C");
    static aIp_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_C(Test_aIp_BFu0i_C, "aIp_BFu0i_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_D()
{
  {
    init_simple_test("aIp_BFu0i_D");
    static aIp_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_D(Test_aIp_BFu0i_D, "aIp_BFu0i_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_F()
{
  {
    init_simple_test("aIp_BFu0i_F");
    static aIp_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_F(Test_aIp_BFu0i_F, "aIp_BFu0i_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_I()
{
  {
    init_simple_test("aIp_BFu0i_I");
    static aIp_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_I(Test_aIp_BFu0i_I, "aIp_BFu0i_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Ip()
{
  {
    init_simple_test("aIp_BFu0i_Ip");
    static aIp_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Ip(Test_aIp_BFu0i_Ip, "aIp_BFu0i_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_L()
{
  {
    init_simple_test("aIp_BFu0i_L");
    static aIp_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_L(Test_aIp_BFu0i_L, "aIp_BFu0i_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_S()
{
  {
    init_simple_test("aIp_BFu0i_S");
    static aIp_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_S(Test_aIp_BFu0i_S, "aIp_BFu0i_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Uc()
{
  {
    init_simple_test("aIp_BFu0i_Uc");
    static aIp_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Uc(Test_aIp_BFu0i_Uc, "aIp_BFu0i_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Ui()
{
  {
    init_simple_test("aIp_BFu0i_Ui");
    static aIp_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Ui(Test_aIp_BFu0i_Ui, "aIp_BFu0i_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Ul()
{
  {
    init_simple_test("aIp_BFu0i_Ul");
    static aIp_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Ul(Test_aIp_BFu0i_Ul, "aIp_BFu0i_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Us()
{
  {
    init_simple_test("aIp_BFu0i_Us");
    static aIp_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Us(Test_aIp_BFu0i_Us, "aIp_BFu0i_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0i_Vp()
{
  {
    init_simple_test("aIp_BFu0i_Vp");
    static aIp_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aIp_BFu0i_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0i_Vp(Test_aIp_BFu0i_Vp, "aIp_BFu0i_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll()
{
  {
    init_simple_test("aIp_BFu0ll");
    static aIp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll(Test_aIp_BFu0ll, "aIp_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu0ll_BFu0c");
    static aIp_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu0c(Test_aIp_BFu0ll_BFu0c, "aIp_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu0i");
    static aIp_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu0i(Test_aIp_BFu0ll_BFu0i, "aIp_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu0ll");
    static aIp_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu0ll(Test_aIp_BFu0ll_BFu0ll, "aIp_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu0s");
    static aIp_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu0s(Test_aIp_BFu0ll_BFu0s, "aIp_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu15i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu15i");
    static aIp_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu15i(Test_aIp_BFu0ll_BFu15i, "aIp_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu15ll");
    static aIp_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu15ll(Test_aIp_BFu0ll_BFu15ll, "aIp_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu15s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu15s");
    static aIp_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu15s(Test_aIp_BFu0ll_BFu15s, "aIp_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu16i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu16i");
    static aIp_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu16i(Test_aIp_BFu0ll_BFu16i, "aIp_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu16ll");
    static aIp_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu16ll(Test_aIp_BFu0ll_BFu16ll, "aIp_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu16s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu16s");
    static aIp_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu16s(Test_aIp_BFu0ll_BFu16s, "aIp_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu17i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu17i");
    static aIp_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu17i(Test_aIp_BFu0ll_BFu17i, "aIp_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu17ll");
    static aIp_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu17ll(Test_aIp_BFu0ll_BFu17ll, "aIp_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu1c()
{
  {
    init_simple_test("aIp_BFu0ll_BFu1c");
    static aIp_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu1c(Test_aIp_BFu0ll_BFu1c, "aIp_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu1i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu1i");
    static aIp_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu1i(Test_aIp_BFu0ll_BFu1i, "aIp_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu1ll");
    static aIp_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu1ll(Test_aIp_BFu0ll_BFu1ll, "aIp_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu1s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu1s");
    static aIp_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu1s(Test_aIp_BFu0ll_BFu1s, "aIp_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu31i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu31i");
    static aIp_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu31i(Test_aIp_BFu0ll_BFu31i, "aIp_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu31ll");
    static aIp_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu31ll(Test_aIp_BFu0ll_BFu31ll, "aIp_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu32i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu32i");
    static aIp_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu32i(Test_aIp_BFu0ll_BFu32i, "aIp_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu32ll");
    static aIp_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu32ll(Test_aIp_BFu0ll_BFu32ll, "aIp_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu33()
{
  {
    init_simple_test("aIp_BFu0ll_BFu33");
    static aIp_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aIp_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu33(Test_aIp_BFu0ll_BFu33, "aIp_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu7c()
{
  {
    init_simple_test("aIp_BFu0ll_BFu7c");
    static aIp_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu7c(Test_aIp_BFu0ll_BFu7c, "aIp_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu7i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu7i");
    static aIp_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu7i(Test_aIp_BFu0ll_BFu7i, "aIp_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu7ll");
    static aIp_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu7ll(Test_aIp_BFu0ll_BFu7ll, "aIp_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu7s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu7s");
    static aIp_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu7s(Test_aIp_BFu0ll_BFu7s, "aIp_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu8c()
{
  {
    init_simple_test("aIp_BFu0ll_BFu8c");
    static aIp_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu8c(Test_aIp_BFu0ll_BFu8c, "aIp_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu8i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu8i");
    static aIp_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu8i(Test_aIp_BFu0ll_BFu8i, "aIp_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu8ll");
    static aIp_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu8ll(Test_aIp_BFu0ll_BFu8ll, "aIp_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu8s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu8s");
    static aIp_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu8s(Test_aIp_BFu0ll_BFu8s, "aIp_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu9i()
{
  {
    init_simple_test("aIp_BFu0ll_BFu9i");
    static aIp_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu9i(Test_aIp_BFu0ll_BFu9i, "aIp_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aIp_BFu0ll_BFu9ll");
    static aIp_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu9ll(Test_aIp_BFu0ll_BFu9ll, "aIp_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_BFu9s()
{
  {
    init_simple_test("aIp_BFu0ll_BFu9s");
    static aIp_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_BFu9s(Test_aIp_BFu0ll_BFu9s, "aIp_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_C()
{
  {
    init_simple_test("aIp_BFu0ll_C");
    static aIp_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_C(Test_aIp_BFu0ll_C, "aIp_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_D()
{
  {
    init_simple_test("aIp_BFu0ll_D");
    static aIp_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_D(Test_aIp_BFu0ll_D, "aIp_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_F()
{
  {
    init_simple_test("aIp_BFu0ll_F");
    static aIp_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_F(Test_aIp_BFu0ll_F, "aIp_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_I()
{
  {
    init_simple_test("aIp_BFu0ll_I");
    static aIp_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_I(Test_aIp_BFu0ll_I, "aIp_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Ip()
{
  {
    init_simple_test("aIp_BFu0ll_Ip");
    static aIp_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Ip(Test_aIp_BFu0ll_Ip, "aIp_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_L()
{
  {
    init_simple_test("aIp_BFu0ll_L");
    static aIp_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_L(Test_aIp_BFu0ll_L, "aIp_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_S()
{
  {
    init_simple_test("aIp_BFu0ll_S");
    static aIp_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_S(Test_aIp_BFu0ll_S, "aIp_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Uc()
{
  {
    init_simple_test("aIp_BFu0ll_Uc");
    static aIp_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Uc(Test_aIp_BFu0ll_Uc, "aIp_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Ui()
{
  {
    init_simple_test("aIp_BFu0ll_Ui");
    static aIp_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Ui(Test_aIp_BFu0ll_Ui, "aIp_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Ul()
{
  {
    init_simple_test("aIp_BFu0ll_Ul");
    static aIp_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Ul(Test_aIp_BFu0ll_Ul, "aIp_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Us()
{
  {
    init_simple_test("aIp_BFu0ll_Us");
    static aIp_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Us(Test_aIp_BFu0ll_Us, "aIp_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0ll_Vp()
{
  {
    init_simple_test("aIp_BFu0ll_Vp");
    static aIp_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aIp_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0ll_Vp(Test_aIp_BFu0ll_Vp, "aIp_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s()
{
  {
    init_simple_test("aIp_BFu0s");
    static aIp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s(Test_aIp_BFu0s, "aIp_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu0c()
{
  {
    init_simple_test("aIp_BFu0s_BFu0c");
    static aIp_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu0c(Test_aIp_BFu0s_BFu0c, "aIp_BFu0s_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu0i()
{
  {
    init_simple_test("aIp_BFu0s_BFu0i");
    static aIp_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu0i(Test_aIp_BFu0s_BFu0i, "aIp_BFu0s_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu0ll");
    static aIp_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu0ll(Test_aIp_BFu0s_BFu0ll, "aIp_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu0s()
{
  {
    init_simple_test("aIp_BFu0s_BFu0s");
    static aIp_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aIp_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu0s(Test_aIp_BFu0s_BFu0s, "aIp_BFu0s_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu15i()
{
  {
    init_simple_test("aIp_BFu0s_BFu15i");
    static aIp_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu15i(Test_aIp_BFu0s_BFu15i, "aIp_BFu0s_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu15ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu15ll");
    static aIp_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu15ll(Test_aIp_BFu0s_BFu15ll, "aIp_BFu0s_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu15s()
{
  {
    init_simple_test("aIp_BFu0s_BFu15s");
    static aIp_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu15s(Test_aIp_BFu0s_BFu15s, "aIp_BFu0s_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu16i()
{
  {
    init_simple_test("aIp_BFu0s_BFu16i");
    static aIp_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu16i(Test_aIp_BFu0s_BFu16i, "aIp_BFu0s_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu16ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu16ll");
    static aIp_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu16ll(Test_aIp_BFu0s_BFu16ll, "aIp_BFu0s_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu16s()
{
  {
    init_simple_test("aIp_BFu0s_BFu16s");
    static aIp_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu16s(Test_aIp_BFu0s_BFu16s, "aIp_BFu0s_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu17i()
{
  {
    init_simple_test("aIp_BFu0s_BFu17i");
    static aIp_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu17i(Test_aIp_BFu0s_BFu17i, "aIp_BFu0s_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu17ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu17ll");
    static aIp_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu17ll(Test_aIp_BFu0s_BFu17ll, "aIp_BFu0s_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu1c()
{
  {
    init_simple_test("aIp_BFu0s_BFu1c");
    static aIp_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu1c(Test_aIp_BFu0s_BFu1c, "aIp_BFu0s_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu1i()
{
  {
    init_simple_test("aIp_BFu0s_BFu1i");
    static aIp_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu1i(Test_aIp_BFu0s_BFu1i, "aIp_BFu0s_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu1ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu1ll");
    static aIp_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu1ll(Test_aIp_BFu0s_BFu1ll, "aIp_BFu0s_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu1s()
{
  {
    init_simple_test("aIp_BFu0s_BFu1s");
    static aIp_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu1s(Test_aIp_BFu0s_BFu1s, "aIp_BFu0s_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu31i()
{
  {
    init_simple_test("aIp_BFu0s_BFu31i");
    static aIp_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu31i(Test_aIp_BFu0s_BFu31i, "aIp_BFu0s_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu31ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu31ll");
    static aIp_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu31ll(Test_aIp_BFu0s_BFu31ll, "aIp_BFu0s_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu32i()
{
  {
    init_simple_test("aIp_BFu0s_BFu32i");
    static aIp_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu32i(Test_aIp_BFu0s_BFu32i, "aIp_BFu0s_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu32ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu32ll");
    static aIp_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu32ll(Test_aIp_BFu0s_BFu32ll, "aIp_BFu0s_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu33()
{
  {
    init_simple_test("aIp_BFu0s_BFu33");
    static aIp_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aIp_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu33(Test_aIp_BFu0s_BFu33, "aIp_BFu0s_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu7c()
{
  {
    init_simple_test("aIp_BFu0s_BFu7c");
    static aIp_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu7c(Test_aIp_BFu0s_BFu7c, "aIp_BFu0s_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu7i()
{
  {
    init_simple_test("aIp_BFu0s_BFu7i");
    static aIp_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu7i(Test_aIp_BFu0s_BFu7i, "aIp_BFu0s_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu7ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu7ll");
    static aIp_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu7ll(Test_aIp_BFu0s_BFu7ll, "aIp_BFu0s_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu7s()
{
  {
    init_simple_test("aIp_BFu0s_BFu7s");
    static aIp_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu7s(Test_aIp_BFu0s_BFu7s, "aIp_BFu0s_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu8c()
{
  {
    init_simple_test("aIp_BFu0s_BFu8c");
    static aIp_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu8c(Test_aIp_BFu0s_BFu8c, "aIp_BFu0s_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu8i()
{
  {
    init_simple_test("aIp_BFu0s_BFu8i");
    static aIp_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu8i(Test_aIp_BFu0s_BFu8i, "aIp_BFu0s_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu8ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu8ll");
    static aIp_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu8ll(Test_aIp_BFu0s_BFu8ll, "aIp_BFu0s_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu8s()
{
  {
    init_simple_test("aIp_BFu0s_BFu8s");
    static aIp_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu8s(Test_aIp_BFu0s_BFu8s, "aIp_BFu0s_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu9i()
{
  {
    init_simple_test("aIp_BFu0s_BFu9i");
    static aIp_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu9i(Test_aIp_BFu0s_BFu9i, "aIp_BFu0s_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu9ll()
{
  {
    init_simple_test("aIp_BFu0s_BFu9ll");
    static aIp_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu9ll(Test_aIp_BFu0s_BFu9ll, "aIp_BFu0s_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_BFu9s()
{
  {
    init_simple_test("aIp_BFu0s_BFu9s");
    static aIp_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_BFu9s(Test_aIp_BFu0s_BFu9s, "aIp_BFu0s_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_C()
{
  {
    init_simple_test("aIp_BFu0s_C");
    static aIp_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_C(Test_aIp_BFu0s_C, "aIp_BFu0s_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_D()
{
  {
    init_simple_test("aIp_BFu0s_D");
    static aIp_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_D(Test_aIp_BFu0s_D, "aIp_BFu0s_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_F()
{
  {
    init_simple_test("aIp_BFu0s_F");
    static aIp_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_F(Test_aIp_BFu0s_F, "aIp_BFu0s_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_I()
{
  {
    init_simple_test("aIp_BFu0s_I");
    static aIp_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_I(Test_aIp_BFu0s_I, "aIp_BFu0s_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Ip()
{
  {
    init_simple_test("aIp_BFu0s_Ip");
    static aIp_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Ip(Test_aIp_BFu0s_Ip, "aIp_BFu0s_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_L()
{
  {
    init_simple_test("aIp_BFu0s_L");
    static aIp_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_L(Test_aIp_BFu0s_L, "aIp_BFu0s_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_S()
{
  {
    init_simple_test("aIp_BFu0s_S");
    static aIp_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_S(Test_aIp_BFu0s_S, "aIp_BFu0s_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Uc()
{
  {
    init_simple_test("aIp_BFu0s_Uc");
    static aIp_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Uc(Test_aIp_BFu0s_Uc, "aIp_BFu0s_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Ui()
{
  {
    init_simple_test("aIp_BFu0s_Ui");
    static aIp_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Ui(Test_aIp_BFu0s_Ui, "aIp_BFu0s_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Ul()
{
  {
    init_simple_test("aIp_BFu0s_Ul");
    static aIp_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Ul(Test_aIp_BFu0s_Ul, "aIp_BFu0s_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Us()
{
  {
    init_simple_test("aIp_BFu0s_Us");
    static aIp_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Us(Test_aIp_BFu0s_Us, "aIp_BFu0s_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu0s_Vp()
{
  {
    init_simple_test("aIp_BFu0s_Vp");
    static aIp_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aIp_BFu0s_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaIp_BFu0s_Vp(Test_aIp_BFu0s_Vp, "aIp_BFu0s_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15i_BFu0c()
{
  {
    init_simple_test("aIp_BFu15i_BFu0c");
    static aIp_BFu15i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu15i_BFu0c(Test_aIp_BFu15i_BFu0c, "aIp_BFu15i_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15i_BFu0i()
{
  {
    init_simple_test("aIp_BFu15i_BFu0i");
    static aIp_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu15i_BFu0i(Test_aIp_BFu15i_BFu0i, "aIp_BFu15i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu15i_BFu0ll");
    static aIp_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu15i_BFu0ll(Test_aIp_BFu15i_BFu0ll, "aIp_BFu15i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15i_BFu0s()
{
  {
    init_simple_test("aIp_BFu15i_BFu0s");
    static aIp_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu15i_BFu0s(Test_aIp_BFu15i_BFu0s, "aIp_BFu15i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu15ll_BFu0c");
    static aIp_BFu15ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu15ll_BFu0c(Test_aIp_BFu15ll_BFu0c, "aIp_BFu15ll_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu15ll_BFu0i");
    static aIp_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu15ll_BFu0i(Test_aIp_BFu15ll_BFu0i, "aIp_BFu15ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu15ll_BFu0ll");
    static aIp_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu15ll_BFu0ll(Test_aIp_BFu15ll_BFu0ll, "aIp_BFu15ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu15ll_BFu0s");
    static aIp_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu15ll_BFu0s(Test_aIp_BFu15ll_BFu0s, "aIp_BFu15ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15s_BFu0c()
{
  {
    init_simple_test("aIp_BFu15s_BFu0c");
    static aIp_BFu15s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu15s_BFu0c(Test_aIp_BFu15s_BFu0c, "aIp_BFu15s_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15s_BFu0i()
{
  {
    init_simple_test("aIp_BFu15s_BFu0i");
    static aIp_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu15s_BFu0i(Test_aIp_BFu15s_BFu0i, "aIp_BFu15s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu15s_BFu0ll");
    static aIp_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu15s_BFu0ll(Test_aIp_BFu15s_BFu0ll, "aIp_BFu15s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu15s_BFu0s()
{
  {
    init_simple_test("aIp_BFu15s_BFu0s");
    static aIp_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aIp_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aIp_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu15s_BFu0s(Test_aIp_BFu15s_BFu0s, "aIp_BFu15s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16i_BFu0c()
{
  {
    init_simple_test("aIp_BFu16i_BFu0c");
    static aIp_BFu16i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu16i_BFu0c(Test_aIp_BFu16i_BFu0c, "aIp_BFu16i_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16i_BFu0i()
{
  {
    init_simple_test("aIp_BFu16i_BFu0i");
    static aIp_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu16i_BFu0i(Test_aIp_BFu16i_BFu0i, "aIp_BFu16i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu16i_BFu0ll");
    static aIp_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu16i_BFu0ll(Test_aIp_BFu16i_BFu0ll, "aIp_BFu16i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16i_BFu0s()
{
  {
    init_simple_test("aIp_BFu16i_BFu0s");
    static aIp_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu16i_BFu0s(Test_aIp_BFu16i_BFu0s, "aIp_BFu16i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu16ll_BFu0c");
    static aIp_BFu16ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu16ll_BFu0c(Test_aIp_BFu16ll_BFu0c, "aIp_BFu16ll_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu16ll_BFu0i");
    static aIp_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu16ll_BFu0i(Test_aIp_BFu16ll_BFu0i, "aIp_BFu16ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu16ll_BFu0ll");
    static aIp_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu16ll_BFu0ll(Test_aIp_BFu16ll_BFu0ll, "aIp_BFu16ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu16ll_BFu0s");
    static aIp_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu16ll_BFu0s(Test_aIp_BFu16ll_BFu0s, "aIp_BFu16ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16s_BFu0c()
{
  {
    init_simple_test("aIp_BFu16s_BFu0c");
    static aIp_BFu16s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu16s_BFu0c(Test_aIp_BFu16s_BFu0c, "aIp_BFu16s_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16s_BFu0i()
{
  {
    init_simple_test("aIp_BFu16s_BFu0i");
    static aIp_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu16s_BFu0i(Test_aIp_BFu16s_BFu0i, "aIp_BFu16s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu16s_BFu0ll");
    static aIp_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu16s_BFu0ll(Test_aIp_BFu16s_BFu0ll, "aIp_BFu16s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu16s_BFu0s()
{
  {
    init_simple_test("aIp_BFu16s_BFu0s");
    static aIp_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aIp_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aIp_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu16s_BFu0s(Test_aIp_BFu16s_BFu0s, "aIp_BFu16s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17i_BFu0c()
{
  {
    init_simple_test("aIp_BFu17i_BFu0c");
    static aIp_BFu17i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu17i_BFu0c(Test_aIp_BFu17i_BFu0c, "aIp_BFu17i_BFu0c", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17i_BFu0i()
{
  {
    init_simple_test("aIp_BFu17i_BFu0i");
    static aIp_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu17i_BFu0i(Test_aIp_BFu17i_BFu0i, "aIp_BFu17i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu17i_BFu0ll");
    static aIp_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu17i_BFu0ll(Test_aIp_BFu17i_BFu0ll, "aIp_BFu17i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17i_BFu0s()
{
  {
    init_simple_test("aIp_BFu17i_BFu0s");
    static aIp_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu17i_BFu0s(Test_aIp_BFu17i_BFu0s, "aIp_BFu17i_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu17ll_BFu0c");
    static aIp_BFu17ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aIp_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu17ll_BFu0c(Test_aIp_BFu17ll_BFu0c, "aIp_BFu17ll_BFu0c", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu17ll_BFu0i");
    static aIp_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu17ll_BFu0i(Test_aIp_BFu17ll_BFu0i, "aIp_BFu17ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu17ll_BFu0ll");
    static aIp_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu17ll_BFu0ll(Test_aIp_BFu17ll_BFu0ll, "aIp_BFu17ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu17ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu17ll_BFu0s");
    static aIp_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aIp_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aIp_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu17ll_BFu0s(Test_aIp_BFu17ll_BFu0s, "aIp_BFu17ll_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1c_BFu0c()
{
  {
    init_simple_test("aIp_BFu1c_BFu0c");
    static aIp_BFu1c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu1c_BFu0c(Test_aIp_BFu1c_BFu0c, "aIp_BFu1c_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1c_BFu0i()
{
  {
    init_simple_test("aIp_BFu1c_BFu0i");
    static aIp_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu1c_BFu0i(Test_aIp_BFu1c_BFu0i, "aIp_BFu1c_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1c_BFu0ll()
{
  {
    init_simple_test("aIp_BFu1c_BFu0ll");
    static aIp_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu1c_BFu0ll(Test_aIp_BFu1c_BFu0ll, "aIp_BFu1c_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1c_BFu0s()
{
  {
    init_simple_test("aIp_BFu1c_BFu0s");
    static aIp_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu1c_BFu0s(Test_aIp_BFu1c_BFu0s, "aIp_BFu1c_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1i_BFu0c()
{
  {
    init_simple_test("aIp_BFu1i_BFu0c");
    static aIp_BFu1i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu1i_BFu0c(Test_aIp_BFu1i_BFu0c, "aIp_BFu1i_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1i_BFu0i()
{
  {
    init_simple_test("aIp_BFu1i_BFu0i");
    static aIp_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu1i_BFu0i(Test_aIp_BFu1i_BFu0i, "aIp_BFu1i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu1i_BFu0ll");
    static aIp_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu1i_BFu0ll(Test_aIp_BFu1i_BFu0ll, "aIp_BFu1i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1i_BFu0s()
{
  {
    init_simple_test("aIp_BFu1i_BFu0s");
    static aIp_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu1i_BFu0s(Test_aIp_BFu1i_BFu0s, "aIp_BFu1i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu1ll_BFu0c");
    static aIp_BFu1ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu1ll_BFu0c(Test_aIp_BFu1ll_BFu0c, "aIp_BFu1ll_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu1ll_BFu0i");
    static aIp_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu1ll_BFu0i(Test_aIp_BFu1ll_BFu0i, "aIp_BFu1ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu1ll_BFu0ll");
    static aIp_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu1ll_BFu0ll(Test_aIp_BFu1ll_BFu0ll, "aIp_BFu1ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu1ll_BFu0s");
    static aIp_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu1ll_BFu0s(Test_aIp_BFu1ll_BFu0s, "aIp_BFu1ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1s_BFu0c()
{
  {
    init_simple_test("aIp_BFu1s_BFu0c");
    static aIp_BFu1s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu1s_BFu0c(Test_aIp_BFu1s_BFu0c, "aIp_BFu1s_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1s_BFu0i()
{
  {
    init_simple_test("aIp_BFu1s_BFu0i");
    static aIp_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu1s_BFu0i(Test_aIp_BFu1s_BFu0i, "aIp_BFu1s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu1s_BFu0ll");
    static aIp_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu1s_BFu0ll(Test_aIp_BFu1s_BFu0ll, "aIp_BFu1s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu1s_BFu0s()
{
  {
    init_simple_test("aIp_BFu1s_BFu0s");
    static aIp_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aIp_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu1s_BFu0s(Test_aIp_BFu1s_BFu0s, "aIp_BFu1s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31i_BFu0c()
{
  {
    init_simple_test("aIp_BFu31i_BFu0c");
    static aIp_BFu31i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu31i_BFu0c(Test_aIp_BFu31i_BFu0c, "aIp_BFu31i_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31i_BFu0i()
{
  {
    init_simple_test("aIp_BFu31i_BFu0i");
    static aIp_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu31i_BFu0i(Test_aIp_BFu31i_BFu0i, "aIp_BFu31i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu31i_BFu0ll");
    static aIp_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu31i_BFu0ll(Test_aIp_BFu31i_BFu0ll, "aIp_BFu31i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31i_BFu0s()
{
  {
    init_simple_test("aIp_BFu31i_BFu0s");
    static aIp_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu31i_BFu0s(Test_aIp_BFu31i_BFu0s, "aIp_BFu31i_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu31ll_BFu0c");
    static aIp_BFu31ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu31ll_BFu0c(Test_aIp_BFu31ll_BFu0c, "aIp_BFu31ll_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu31ll_BFu0i");
    static aIp_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu31ll_BFu0i(Test_aIp_BFu31ll_BFu0i, "aIp_BFu31ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu31ll_BFu0ll");
    static aIp_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu31ll_BFu0ll(Test_aIp_BFu31ll_BFu0ll, "aIp_BFu31ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu31ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu31ll_BFu0s");
    static aIp_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aIp_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aIp_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu31ll_BFu0s(Test_aIp_BFu31ll_BFu0s, "aIp_BFu31ll_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32i_BFu0c()
{
  {
    init_simple_test("aIp_BFu32i_BFu0c");
    static aIp_BFu32i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu32i_BFu0c(Test_aIp_BFu32i_BFu0c, "aIp_BFu32i_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32i_BFu0i()
{
  {
    init_simple_test("aIp_BFu32i_BFu0i");
    static aIp_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu32i_BFu0i(Test_aIp_BFu32i_BFu0i, "aIp_BFu32i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu32i_BFu0ll");
    static aIp_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu32i_BFu0ll(Test_aIp_BFu32i_BFu0ll, "aIp_BFu32i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32i_BFu0s()
{
  {
    init_simple_test("aIp_BFu32i_BFu0s");
    static aIp_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu32i_BFu0s(Test_aIp_BFu32i_BFu0s, "aIp_BFu32i_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu32ll_BFu0c");
    static aIp_BFu32ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu32ll_BFu0c(Test_aIp_BFu32ll_BFu0c, "aIp_BFu32ll_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu32ll_BFu0i");
    static aIp_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu32ll_BFu0i(Test_aIp_BFu32ll_BFu0i, "aIp_BFu32ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu32ll_BFu0ll");
    static aIp_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu32ll_BFu0ll(Test_aIp_BFu32ll_BFu0ll, "aIp_BFu32ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu32ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu32ll_BFu0s");
    static aIp_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aIp_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aIp_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu32ll_BFu0s(Test_aIp_BFu32ll_BFu0s, "aIp_BFu32ll_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu33_BFu0c()
{
  {
    init_simple_test("aIp_BFu33_BFu0c");
    static aIp_BFu33_BFu0c lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aIp_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu33_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu33_BFu0c(Test_aIp_BFu33_BFu0c, "aIp_BFu33_BFu0c", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu33_BFu0i()
{
  {
    init_simple_test("aIp_BFu33_BFu0i");
    static aIp_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu33_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu33_BFu0i(Test_aIp_BFu33_BFu0i, "aIp_BFu33_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu33_BFu0ll()
{
  {
    init_simple_test("aIp_BFu33_BFu0ll");
    static aIp_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu33_BFu0ll(Test_aIp_BFu33_BFu0ll, "aIp_BFu33_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu33_BFu0s()
{
  {
    init_simple_test("aIp_BFu33_BFu0s");
    static aIp_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aIp_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aIp_BFu33_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aIp_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu33_BFu0s(Test_aIp_BFu33_BFu0s, "aIp_BFu33_BFu0s", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7c_BFu0c()
{
  {
    init_simple_test("aIp_BFu7c_BFu0c");
    static aIp_BFu7c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu7c_BFu0c(Test_aIp_BFu7c_BFu0c, "aIp_BFu7c_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7c_BFu0i()
{
  {
    init_simple_test("aIp_BFu7c_BFu0i");
    static aIp_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu7c_BFu0i(Test_aIp_BFu7c_BFu0i, "aIp_BFu7c_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7c_BFu0ll()
{
  {
    init_simple_test("aIp_BFu7c_BFu0ll");
    static aIp_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu7c_BFu0ll(Test_aIp_BFu7c_BFu0ll, "aIp_BFu7c_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7c_BFu0s()
{
  {
    init_simple_test("aIp_BFu7c_BFu0s");
    static aIp_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu7c_BFu0s(Test_aIp_BFu7c_BFu0s, "aIp_BFu7c_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7i_BFu0c()
{
  {
    init_simple_test("aIp_BFu7i_BFu0c");
    static aIp_BFu7i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu7i_BFu0c(Test_aIp_BFu7i_BFu0c, "aIp_BFu7i_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7i_BFu0i()
{
  {
    init_simple_test("aIp_BFu7i_BFu0i");
    static aIp_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu7i_BFu0i(Test_aIp_BFu7i_BFu0i, "aIp_BFu7i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu7i_BFu0ll");
    static aIp_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu7i_BFu0ll(Test_aIp_BFu7i_BFu0ll, "aIp_BFu7i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7i_BFu0s()
{
  {
    init_simple_test("aIp_BFu7i_BFu0s");
    static aIp_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu7i_BFu0s(Test_aIp_BFu7i_BFu0s, "aIp_BFu7i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu7ll_BFu0c");
    static aIp_BFu7ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu7ll_BFu0c(Test_aIp_BFu7ll_BFu0c, "aIp_BFu7ll_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu7ll_BFu0i");
    static aIp_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu7ll_BFu0i(Test_aIp_BFu7ll_BFu0i, "aIp_BFu7ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu7ll_BFu0ll");
    static aIp_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu7ll_BFu0ll(Test_aIp_BFu7ll_BFu0ll, "aIp_BFu7ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu7ll_BFu0s");
    static aIp_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu7ll_BFu0s(Test_aIp_BFu7ll_BFu0s, "aIp_BFu7ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7s_BFu0c()
{
  {
    init_simple_test("aIp_BFu7s_BFu0c");
    static aIp_BFu7s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu7s_BFu0c(Test_aIp_BFu7s_BFu0c, "aIp_BFu7s_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7s_BFu0i()
{
  {
    init_simple_test("aIp_BFu7s_BFu0i");
    static aIp_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu7s_BFu0i(Test_aIp_BFu7s_BFu0i, "aIp_BFu7s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu7s_BFu0ll");
    static aIp_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu7s_BFu0ll(Test_aIp_BFu7s_BFu0ll, "aIp_BFu7s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu7s_BFu0s()
{
  {
    init_simple_test("aIp_BFu7s_BFu0s");
    static aIp_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aIp_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aIp_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu7s_BFu0s(Test_aIp_BFu7s_BFu0s, "aIp_BFu7s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8c_BFu0c()
{
  {
    init_simple_test("aIp_BFu8c_BFu0c");
    static aIp_BFu8c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8c_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu8c_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu8c_BFu0c(Test_aIp_BFu8c_BFu0c, "aIp_BFu8c_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8c_BFu0i()
{
  {
    init_simple_test("aIp_BFu8c_BFu0i");
    static aIp_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8c_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu8c_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu8c_BFu0i(Test_aIp_BFu8c_BFu0i, "aIp_BFu8c_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8c_BFu0ll()
{
  {
    init_simple_test("aIp_BFu8c_BFu0ll");
    static aIp_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu8c_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu8c_BFu0ll(Test_aIp_BFu8c_BFu0ll, "aIp_BFu8c_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8c_BFu0s()
{
  {
    init_simple_test("aIp_BFu8c_BFu0s");
    static aIp_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8c_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu8c_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu8c_BFu0s(Test_aIp_BFu8c_BFu0s, "aIp_BFu8c_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8i_BFu0c()
{
  {
    init_simple_test("aIp_BFu8i_BFu0c");
    static aIp_BFu8i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu8i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu8i_BFu0c(Test_aIp_BFu8i_BFu0c, "aIp_BFu8i_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8i_BFu0i()
{
  {
    init_simple_test("aIp_BFu8i_BFu0i");
    static aIp_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu8i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu8i_BFu0i(Test_aIp_BFu8i_BFu0i, "aIp_BFu8i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu8i_BFu0ll");
    static aIp_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu8i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu8i_BFu0ll(Test_aIp_BFu8i_BFu0ll, "aIp_BFu8i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8i_BFu0s()
{
  {
    init_simple_test("aIp_BFu8i_BFu0s");
    static aIp_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu8i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu8i_BFu0s(Test_aIp_BFu8i_BFu0s, "aIp_BFu8i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu8ll_BFu0c");
    static aIp_BFu8ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu8ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu8ll_BFu0c(Test_aIp_BFu8ll_BFu0c, "aIp_BFu8ll_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu8ll_BFu0i");
    static aIp_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu8ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu8ll_BFu0i(Test_aIp_BFu8ll_BFu0i, "aIp_BFu8ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu8ll_BFu0ll");
    static aIp_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu8ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu8ll_BFu0ll(Test_aIp_BFu8ll_BFu0ll, "aIp_BFu8ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu8ll_BFu0s");
    static aIp_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu8ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu8ll_BFu0s(Test_aIp_BFu8ll_BFu0s, "aIp_BFu8ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8s_BFu0c()
{
  {
    init_simple_test("aIp_BFu8s_BFu0c");
    static aIp_BFu8s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu8s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu8s_BFu0c(Test_aIp_BFu8s_BFu0c, "aIp_BFu8s_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8s_BFu0i()
{
  {
    init_simple_test("aIp_BFu8s_BFu0i");
    static aIp_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu8s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu8s_BFu0i(Test_aIp_BFu8s_BFu0i, "aIp_BFu8s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu8s_BFu0ll");
    static aIp_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu8s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu8s_BFu0ll(Test_aIp_BFu8s_BFu0ll, "aIp_BFu8s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu8s_BFu0s()
{
  {
    init_simple_test("aIp_BFu8s_BFu0s");
    static aIp_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu8s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu8s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aIp_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aIp_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu8s_BFu0s(Test_aIp_BFu8s_BFu0s, "aIp_BFu8s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9i_BFu0c()
{
  {
    init_simple_test("aIp_BFu9i_BFu0c");
    static aIp_BFu9i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9i_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu9i_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu9i_BFu0c(Test_aIp_BFu9i_BFu0c, "aIp_BFu9i_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9i_BFu0i()
{
  {
    init_simple_test("aIp_BFu9i_BFu0i");
    static aIp_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9i_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu9i_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu9i_BFu0i(Test_aIp_BFu9i_BFu0i, "aIp_BFu9i_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9i_BFu0ll()
{
  {
    init_simple_test("aIp_BFu9i_BFu0ll");
    static aIp_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu9i_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu9i_BFu0ll(Test_aIp_BFu9i_BFu0ll, "aIp_BFu9i_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9i_BFu0s()
{
  {
    init_simple_test("aIp_BFu9i_BFu0s");
    static aIp_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9i_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu9i_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu9i_BFu0s(Test_aIp_BFu9i_BFu0s, "aIp_BFu9i_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9ll_BFu0c()
{
  {
    init_simple_test("aIp_BFu9ll_BFu0c");
    static aIp_BFu9ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu9ll_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu9ll_BFu0c(Test_aIp_BFu9ll_BFu0c, "aIp_BFu9ll_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9ll_BFu0i()
{
  {
    init_simple_test("aIp_BFu9ll_BFu0i");
    static aIp_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu9ll_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu9ll_BFu0i(Test_aIp_BFu9ll_BFu0i, "aIp_BFu9ll_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aIp_BFu9ll_BFu0ll");
    static aIp_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu9ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu9ll_BFu0ll(Test_aIp_BFu9ll_BFu0ll, "aIp_BFu9ll_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9ll_BFu0s()
{
  {
    init_simple_test("aIp_BFu9ll_BFu0s");
    static aIp_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu9ll_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu9ll_BFu0s(Test_aIp_BFu9ll_BFu0s, "aIp_BFu9ll_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9s_BFu0c()
{
  {
    init_simple_test("aIp_BFu9s_BFu0c");
    static aIp_BFu9s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9s_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_BFu9s_BFu0c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaIp_BFu9s_BFu0c(Test_aIp_BFu9s_BFu0c, "aIp_BFu9s_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9s_BFu0i()
{
  {
    init_simple_test("aIp_BFu9s_BFu0i");
    static aIp_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9s_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_BFu9s_BFu0i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaIp_BFu9s_BFu0i(Test_aIp_BFu9s_BFu0i, "aIp_BFu9s_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9s_BFu0ll()
{
  {
    init_simple_test("aIp_BFu9s_BFu0ll");
    static aIp_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_BFu9s_BFu0ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaIp_BFu9s_BFu0ll(Test_aIp_BFu9s_BFu0ll, "aIp_BFu9s_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_BFu9s_BFu0s()
{
  {
    init_simple_test("aIp_BFu9s_BFu0s");
    static aIp_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_BFu9s_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_BFu9s_BFu0s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aIp_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aIp_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaIp_BFu9s_BFu0s(Test_aIp_BFu9s_BFu0s, "aIp_BFu9s_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_C_BFu0c()
{
  {
    init_simple_test("aIp_C_BFu0c");
    static aIp_C_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_C_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_C_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_C_BFu0c(Test_aIp_C_BFu0c, "aIp_C_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_C_BFu0i()
{
  {
    init_simple_test("aIp_C_BFu0i");
    static aIp_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_C_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_C_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_C_BFu0i(Test_aIp_C_BFu0i, "aIp_C_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_C_BFu0ll()
{
  {
    init_simple_test("aIp_C_BFu0ll");
    static aIp_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_C_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_C_BFu0ll(Test_aIp_C_BFu0ll, "aIp_C_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_C_BFu0s()
{
  {
    init_simple_test("aIp_C_BFu0s");
    static aIp_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_C_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_C_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_C_BFu0s(Test_aIp_C_BFu0s, "aIp_C_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_D_BFu0c()
{
  {
    init_simple_test("aIp_D_BFu0c");
    static aIp_D_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_D_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_D_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_D_BFu0c(Test_aIp_D_BFu0c, "aIp_D_BFu0c", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_D_BFu0i()
{
  {
    init_simple_test("aIp_D_BFu0i");
    static aIp_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_D_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_D_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_D_BFu0i(Test_aIp_D_BFu0i, "aIp_D_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_D_BFu0ll()
{
  {
    init_simple_test("aIp_D_BFu0ll");
    static aIp_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_D_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_D_BFu0ll(Test_aIp_D_BFu0ll, "aIp_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_D_BFu0s()
{
  {
    init_simple_test("aIp_D_BFu0s");
    static aIp_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_D_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_D_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_D_BFu0s(Test_aIp_D_BFu0s, "aIp_D_BFu0s", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_F_BFu0c()
{
  {
    init_simple_test("aIp_F_BFu0c");
    static aIp_F_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_F_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_F_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_F_BFu0c(Test_aIp_F_BFu0c, "aIp_F_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_F_BFu0i()
{
  {
    init_simple_test("aIp_F_BFu0i");
    static aIp_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_F_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_F_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_F_BFu0i(Test_aIp_F_BFu0i, "aIp_F_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_F_BFu0ll()
{
  {
    init_simple_test("aIp_F_BFu0ll");
    static aIp_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_F_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_F_BFu0ll(Test_aIp_F_BFu0ll, "aIp_F_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_F_BFu0s()
{
  {
    init_simple_test("aIp_F_BFu0s");
    static aIp_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_F_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_F_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_F_BFu0s(Test_aIp_F_BFu0s, "aIp_F_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_I_BFu0c()
{
  {
    init_simple_test("aIp_I_BFu0c");
    static aIp_I_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_I_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_I_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_I_BFu0c(Test_aIp_I_BFu0c, "aIp_I_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_I_BFu0i()
{
  {
    init_simple_test("aIp_I_BFu0i");
    static aIp_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_I_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_I_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_I_BFu0i(Test_aIp_I_BFu0i, "aIp_I_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_I_BFu0ll()
{
  {
    init_simple_test("aIp_I_BFu0ll");
    static aIp_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_I_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_I_BFu0ll(Test_aIp_I_BFu0ll, "aIp_I_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_I_BFu0s()
{
  {
    init_simple_test("aIp_I_BFu0s");
    static aIp_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_I_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_I_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_I_BFu0s(Test_aIp_I_BFu0s, "aIp_I_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ip_BFu0c()
{
  {
    init_simple_test("aIp_Ip_BFu0c");
    static aIp_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Ip_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ip_BFu0c(Test_aIp_Ip_BFu0c, "aIp_Ip_BFu0c", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ip_BFu0i()
{
  {
    init_simple_test("aIp_Ip_BFu0i");
    static aIp_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Ip_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ip_BFu0i(Test_aIp_Ip_BFu0i, "aIp_Ip_BFu0i", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ip_BFu0ll()
{
  {
    init_simple_test("aIp_Ip_BFu0ll");
    static aIp_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Ip_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ip_BFu0ll(Test_aIp_Ip_BFu0ll, "aIp_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ip_BFu0s()
{
  {
    init_simple_test("aIp_Ip_BFu0s");
    static aIp_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Ip_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ip_BFu0s(Test_aIp_Ip_BFu0s, "aIp_Ip_BFu0s", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_L_BFu0c()
{
  {
    init_simple_test("aIp_L_BFu0c");
    static aIp_L_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_L_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_L_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_L_BFu0c(Test_aIp_L_BFu0c, "aIp_L_BFu0c", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_L_BFu0i()
{
  {
    init_simple_test("aIp_L_BFu0i");
    static aIp_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_L_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_L_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_L_BFu0i(Test_aIp_L_BFu0i, "aIp_L_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_L_BFu0ll()
{
  {
    init_simple_test("aIp_L_BFu0ll");
    static aIp_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_L_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_L_BFu0ll(Test_aIp_L_BFu0ll, "aIp_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_L_BFu0s()
{
  {
    init_simple_test("aIp_L_BFu0s");
    static aIp_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_L_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_L_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_L_BFu0s(Test_aIp_L_BFu0s, "aIp_L_BFu0s", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_S_BFu0c()
{
  {
    init_simple_test("aIp_S_BFu0c");
    static aIp_S_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_S_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_S_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_S_BFu0c(Test_aIp_S_BFu0c, "aIp_S_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_S_BFu0i()
{
  {
    init_simple_test("aIp_S_BFu0i");
    static aIp_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_S_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_S_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_S_BFu0i(Test_aIp_S_BFu0i, "aIp_S_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_S_BFu0ll()
{
  {
    init_simple_test("aIp_S_BFu0ll");
    static aIp_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_S_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_S_BFu0ll(Test_aIp_S_BFu0ll, "aIp_S_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_S_BFu0s()
{
  {
    init_simple_test("aIp_S_BFu0s");
    static aIp_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_S_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_S_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_S_BFu0s(Test_aIp_S_BFu0s, "aIp_S_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Uc_BFu0c()
{
  {
    init_simple_test("aIp_Uc_BFu0c");
    static aIp_Uc_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aIp_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Uc_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Uc_BFu0c(Test_aIp_Uc_BFu0c, "aIp_Uc_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Uc_BFu0i()
{
  {
    init_simple_test("aIp_Uc_BFu0i");
    static aIp_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Uc_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Uc_BFu0i(Test_aIp_Uc_BFu0i, "aIp_Uc_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Uc_BFu0ll()
{
  {
    init_simple_test("aIp_Uc_BFu0ll");
    static aIp_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Uc_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Uc_BFu0ll(Test_aIp_Uc_BFu0ll, "aIp_Uc_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Uc_BFu0s()
{
  {
    init_simple_test("aIp_Uc_BFu0s");
    static aIp_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Uc_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Uc_BFu0s(Test_aIp_Uc_BFu0s, "aIp_Uc_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ui_BFu0c()
{
  {
    init_simple_test("aIp_Ui_BFu0c");
    static aIp_Ui_BFu0c lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Ui_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ui_BFu0c(Test_aIp_Ui_BFu0c, "aIp_Ui_BFu0c", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ui_BFu0i()
{
  {
    init_simple_test("aIp_Ui_BFu0i");
    static aIp_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Ui_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ui_BFu0i(Test_aIp_Ui_BFu0i, "aIp_Ui_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ui_BFu0ll()
{
  {
    init_simple_test("aIp_Ui_BFu0ll");
    static aIp_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Ui_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ui_BFu0ll(Test_aIp_Ui_BFu0ll, "aIp_Ui_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ui_BFu0s()
{
  {
    init_simple_test("aIp_Ui_BFu0s");
    static aIp_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Ui_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ui_BFu0s(Test_aIp_Ui_BFu0s, "aIp_Ui_BFu0s", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ul_BFu0c()
{
  {
    init_simple_test("aIp_Ul_BFu0c");
    static aIp_Ul_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Ul_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ul_BFu0c(Test_aIp_Ul_BFu0c, "aIp_Ul_BFu0c", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ul_BFu0i()
{
  {
    init_simple_test("aIp_Ul_BFu0i");
    static aIp_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Ul_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ul_BFu0i(Test_aIp_Ul_BFu0i, "aIp_Ul_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ul_BFu0ll()
{
  {
    init_simple_test("aIp_Ul_BFu0ll");
    static aIp_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Ul_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ul_BFu0ll(Test_aIp_Ul_BFu0ll, "aIp_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Ul_BFu0s()
{
  {
    init_simple_test("aIp_Ul_BFu0s");
    static aIp_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aIp_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Ul_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Ul_BFu0s(Test_aIp_Ul_BFu0s, "aIp_Ul_BFu0s", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Us_BFu0c()
{
  {
    init_simple_test("aIp_Us_BFu0c");
    static aIp_Us_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Us_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Us_BFu0c(Test_aIp_Us_BFu0c, "aIp_Us_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Us_BFu0i()
{
  {
    init_simple_test("aIp_Us_BFu0i");
    static aIp_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aIp_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Us_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Us_BFu0i(Test_aIp_Us_BFu0i, "aIp_Us_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Us_BFu0ll()
{
  {
    init_simple_test("aIp_Us_BFu0ll");
    static aIp_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Us_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Us_BFu0ll(Test_aIp_Us_BFu0ll, "aIp_Us_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Us_BFu0s()
{
  {
    init_simple_test("aIp_Us_BFu0s");
    static aIp_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aIp_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Us_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Us_BFu0s(Test_aIp_Us_BFu0s, "aIp_Us_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Vp_BFu0c()
{
  {
    init_simple_test("aIp_Vp_BFu0c");
    static aIp_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "aIp_Vp_BFu0c.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaIp_Vp_BFu0c(Test_aIp_Vp_BFu0c, "aIp_Vp_BFu0c", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Vp_BFu0i()
{
  {
    init_simple_test("aIp_Vp_BFu0i");
    static aIp_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "aIp_Vp_BFu0i.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaIp_Vp_BFu0i(Test_aIp_Vp_BFu0i, "aIp_Vp_BFu0i", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Vp_BFu0ll()
{
  {
    init_simple_test("aIp_Vp_BFu0ll");
    static aIp_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "aIp_Vp_BFu0ll.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaIp_Vp_BFu0ll(Test_aIp_Vp_BFu0ll, "aIp_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aIp_Vp_BFu0s()
{
  {
    init_simple_test("aIp_Vp_BFu0s");
    static aIp_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aIp_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aIp_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "aIp_Vp_BFu0s.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "aIp_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaIp_Vp_BFu0s(Test_aIp_Vp_BFu0s, "aIp_Vp_BFu0s", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c()
{
  {
    init_simple_test("aL_BFu0c");
    static aL_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0c(Test_aL_BFu0c, "aL_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu0c()
{
  {
    init_simple_test("aL_BFu0c_BFu0c");
    static aL_BFu0c_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu0c(Test_aL_BFu0c_BFu0c, "aL_BFu0c_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu0i()
{
  {
    init_simple_test("aL_BFu0c_BFu0i");
    static aL_BFu0c_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu0i(Test_aL_BFu0c_BFu0i, "aL_BFu0c_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu0ll()
{
  {
    init_simple_test("aL_BFu0c_BFu0ll");
    static aL_BFu0c_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu0ll(Test_aL_BFu0c_BFu0ll, "aL_BFu0c_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu0s()
{
  {
    init_simple_test("aL_BFu0c_BFu0s");
    static aL_BFu0c_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu0s(Test_aL_BFu0c_BFu0s, "aL_BFu0c_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu15i()
{
  {
    init_simple_test("aL_BFu0c_BFu15i");
    static aL_BFu0c_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu15i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu15i(Test_aL_BFu0c_BFu15i, "aL_BFu0c_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu15ll()
{
  {
    init_simple_test("aL_BFu0c_BFu15ll");
    static aL_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu15ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu15ll(Test_aL_BFu0c_BFu15ll, "aL_BFu0c_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu15s()
{
  {
    init_simple_test("aL_BFu0c_BFu15s");
    static aL_BFu0c_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu15s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu15s(Test_aL_BFu0c_BFu15s, "aL_BFu0c_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu16i()
{
  {
    init_simple_test("aL_BFu0c_BFu16i");
    static aL_BFu0c_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu16i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu16i(Test_aL_BFu0c_BFu16i, "aL_BFu0c_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu16ll()
{
  {
    init_simple_test("aL_BFu0c_BFu16ll");
    static aL_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu16ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu16ll(Test_aL_BFu0c_BFu16ll, "aL_BFu0c_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu16s()
{
  {
    init_simple_test("aL_BFu0c_BFu16s");
    static aL_BFu0c_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu16s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu16s(Test_aL_BFu0c_BFu16s, "aL_BFu0c_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu17i()
{
  {
    init_simple_test("aL_BFu0c_BFu17i");
    static aL_BFu0c_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu17i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu17i(Test_aL_BFu0c_BFu17i, "aL_BFu0c_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu17ll()
{
  {
    init_simple_test("aL_BFu0c_BFu17ll");
    static aL_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu17ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu17ll(Test_aL_BFu0c_BFu17ll, "aL_BFu0c_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu1c()
{
  {
    init_simple_test("aL_BFu0c_BFu1c");
    static aL_BFu0c_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu1c)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu1c(Test_aL_BFu0c_BFu1c, "aL_BFu0c_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu1i()
{
  {
    init_simple_test("aL_BFu0c_BFu1i");
    static aL_BFu0c_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu1i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu1i(Test_aL_BFu0c_BFu1i, "aL_BFu0c_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu1ll()
{
  {
    init_simple_test("aL_BFu0c_BFu1ll");
    static aL_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu1ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu1ll(Test_aL_BFu0c_BFu1ll, "aL_BFu0c_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu1s()
{
  {
    init_simple_test("aL_BFu0c_BFu1s");
    static aL_BFu0c_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu1s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu1s(Test_aL_BFu0c_BFu1s, "aL_BFu0c_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu31i()
{
  {
    init_simple_test("aL_BFu0c_BFu31i");
    static aL_BFu0c_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu31i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu31i(Test_aL_BFu0c_BFu31i, "aL_BFu0c_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu31ll()
{
  {
    init_simple_test("aL_BFu0c_BFu31ll");
    static aL_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu31ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu31ll(Test_aL_BFu0c_BFu31ll, "aL_BFu0c_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu32i()
{
  {
    init_simple_test("aL_BFu0c_BFu32i");
    static aL_BFu0c_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu32i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu32i(Test_aL_BFu0c_BFu32i, "aL_BFu0c_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu32ll()
{
  {
    init_simple_test("aL_BFu0c_BFu32ll");
    static aL_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu32ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu32ll(Test_aL_BFu0c_BFu32ll, "aL_BFu0c_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu33()
{
  {
    init_simple_test("aL_BFu0c_BFu33");
    static aL_BFu0c_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aL_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu33)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu33(Test_aL_BFu0c_BFu33, "aL_BFu0c_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu7c()
{
  {
    init_simple_test("aL_BFu0c_BFu7c");
    static aL_BFu0c_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu7c)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu7c(Test_aL_BFu0c_BFu7c, "aL_BFu0c_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu7i()
{
  {
    init_simple_test("aL_BFu0c_BFu7i");
    static aL_BFu0c_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu7i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu7i(Test_aL_BFu0c_BFu7i, "aL_BFu0c_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu7ll()
{
  {
    init_simple_test("aL_BFu0c_BFu7ll");
    static aL_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu7ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu7ll(Test_aL_BFu0c_BFu7ll, "aL_BFu0c_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu7s()
{
  {
    init_simple_test("aL_BFu0c_BFu7s");
    static aL_BFu0c_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu7s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu7s(Test_aL_BFu0c_BFu7s, "aL_BFu0c_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu8c()
{
  {
    init_simple_test("aL_BFu0c_BFu8c");
    static aL_BFu0c_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu8c)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu8c(Test_aL_BFu0c_BFu8c, "aL_BFu0c_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu8i()
{
  {
    init_simple_test("aL_BFu0c_BFu8i");
    static aL_BFu0c_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu8i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu8i(Test_aL_BFu0c_BFu8i, "aL_BFu0c_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu8ll()
{
  {
    init_simple_test("aL_BFu0c_BFu8ll");
    static aL_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu8ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu8ll(Test_aL_BFu0c_BFu8ll, "aL_BFu0c_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu8s()
{
  {
    init_simple_test("aL_BFu0c_BFu8s");
    static aL_BFu0c_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu8s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu8s(Test_aL_BFu0c_BFu8s, "aL_BFu0c_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu9i()
{
  {
    init_simple_test("aL_BFu0c_BFu9i");
    static aL_BFu0c_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu9i)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu9i(Test_aL_BFu0c_BFu9i, "aL_BFu0c_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu9ll()
{
  {
    init_simple_test("aL_BFu0c_BFu9ll");
    static aL_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu9ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu9ll(Test_aL_BFu0c_BFu9ll, "aL_BFu0c_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_BFu9s()
{
  {
    init_simple_test("aL_BFu0c_BFu9s");
    static aL_BFu0c_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_BFu9s)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_BFu9s(Test_aL_BFu0c_BFu9s, "aL_BFu0c_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_C()
{
  {
    init_simple_test("aL_BFu0c_C");
    static aL_BFu0c_C lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_C)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_C.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_C(Test_aL_BFu0c_C, "aL_BFu0c_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_D()
{
  {
    init_simple_test("aL_BFu0c_D");
    static aL_BFu0c_D lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_D)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_D.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_D(Test_aL_BFu0c_D, "aL_BFu0c_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_F()
{
  {
    init_simple_test("aL_BFu0c_F");
    static aL_BFu0c_F lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_F)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_F.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_F(Test_aL_BFu0c_F, "aL_BFu0c_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_I()
{
  {
    init_simple_test("aL_BFu0c_I");
    static aL_BFu0c_I lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_I)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_I.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_I(Test_aL_BFu0c_I, "aL_BFu0c_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Ip()
{
  {
    init_simple_test("aL_BFu0c_Ip");
    static aL_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Ip.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Ip(Test_aL_BFu0c_Ip, "aL_BFu0c_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_L()
{
  {
    init_simple_test("aL_BFu0c_L");
    static aL_BFu0c_L lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_L)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_L.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_L(Test_aL_BFu0c_L, "aL_BFu0c_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_S()
{
  {
    init_simple_test("aL_BFu0c_S");
    static aL_BFu0c_S lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_S)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_S.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_S(Test_aL_BFu0c_S, "aL_BFu0c_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Uc()
{
  {
    init_simple_test("aL_BFu0c_Uc");
    static aL_BFu0c_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Uc.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Uc(Test_aL_BFu0c_Uc, "aL_BFu0c_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Ui()
{
  {
    init_simple_test("aL_BFu0c_Ui");
    static aL_BFu0c_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Ui.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Ui(Test_aL_BFu0c_Ui, "aL_BFu0c_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Ul()
{
  {
    init_simple_test("aL_BFu0c_Ul");
    static aL_BFu0c_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Ul.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Ul(Test_aL_BFu0c_Ul, "aL_BFu0c_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Us()
{
  {
    init_simple_test("aL_BFu0c_Us");
    static aL_BFu0c_Us lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Us.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Us(Test_aL_BFu0c_Us, "aL_BFu0c_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0c_Vp()
{
  {
    init_simple_test("aL_BFu0c_Vp");
    static aL_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "aL_BFu0c_Vp.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0c_Vp(Test_aL_BFu0c_Vp, "aL_BFu0c_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i()
{
  {
    init_simple_test("aL_BFu0i");
    static aL_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0i(Test_aL_BFu0i, "aL_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu0c()
{
  {
    init_simple_test("aL_BFu0i_BFu0c");
    static aL_BFu0i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu0c(Test_aL_BFu0i_BFu0c, "aL_BFu0i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu0i()
{
  {
    init_simple_test("aL_BFu0i_BFu0i");
    static aL_BFu0i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu0i(Test_aL_BFu0i_BFu0i, "aL_BFu0i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu0ll()
{
  {
    init_simple_test("aL_BFu0i_BFu0ll");
    static aL_BFu0i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu0ll(Test_aL_BFu0i_BFu0ll, "aL_BFu0i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu0s()
{
  {
    init_simple_test("aL_BFu0i_BFu0s");
    static aL_BFu0i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu0s(Test_aL_BFu0i_BFu0s, "aL_BFu0i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu15i()
{
  {
    init_simple_test("aL_BFu0i_BFu15i");
    static aL_BFu0i_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu15i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu15i(Test_aL_BFu0i_BFu15i, "aL_BFu0i_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu15ll()
{
  {
    init_simple_test("aL_BFu0i_BFu15ll");
    static aL_BFu0i_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu15ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu15ll(Test_aL_BFu0i_BFu15ll, "aL_BFu0i_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu15s()
{
  {
    init_simple_test("aL_BFu0i_BFu15s");
    static aL_BFu0i_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu15s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu15s(Test_aL_BFu0i_BFu15s, "aL_BFu0i_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu16i()
{
  {
    init_simple_test("aL_BFu0i_BFu16i");
    static aL_BFu0i_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu16i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu16i(Test_aL_BFu0i_BFu16i, "aL_BFu0i_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu16ll()
{
  {
    init_simple_test("aL_BFu0i_BFu16ll");
    static aL_BFu0i_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu16ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu16ll(Test_aL_BFu0i_BFu16ll, "aL_BFu0i_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu16s()
{
  {
    init_simple_test("aL_BFu0i_BFu16s");
    static aL_BFu0i_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu16s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu16s(Test_aL_BFu0i_BFu16s, "aL_BFu0i_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu17i()
{
  {
    init_simple_test("aL_BFu0i_BFu17i");
    static aL_BFu0i_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu17i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu17i(Test_aL_BFu0i_BFu17i, "aL_BFu0i_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu17ll()
{
  {
    init_simple_test("aL_BFu0i_BFu17ll");
    static aL_BFu0i_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu17ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu17ll(Test_aL_BFu0i_BFu17ll, "aL_BFu0i_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu1c()
{
  {
    init_simple_test("aL_BFu0i_BFu1c");
    static aL_BFu0i_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu1c)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu1c(Test_aL_BFu0i_BFu1c, "aL_BFu0i_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu1i()
{
  {
    init_simple_test("aL_BFu0i_BFu1i");
    static aL_BFu0i_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu1i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu1i(Test_aL_BFu0i_BFu1i, "aL_BFu0i_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu1ll()
{
  {
    init_simple_test("aL_BFu0i_BFu1ll");
    static aL_BFu0i_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu1ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu1ll(Test_aL_BFu0i_BFu1ll, "aL_BFu0i_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu1s()
{
  {
    init_simple_test("aL_BFu0i_BFu1s");
    static aL_BFu0i_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu1s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu1s(Test_aL_BFu0i_BFu1s, "aL_BFu0i_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu31i()
{
  {
    init_simple_test("aL_BFu0i_BFu31i");
    static aL_BFu0i_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu31i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu31i(Test_aL_BFu0i_BFu31i, "aL_BFu0i_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu31ll()
{
  {
    init_simple_test("aL_BFu0i_BFu31ll");
    static aL_BFu0i_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu31ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu31ll(Test_aL_BFu0i_BFu31ll, "aL_BFu0i_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu32i()
{
  {
    init_simple_test("aL_BFu0i_BFu32i");
    static aL_BFu0i_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu32i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu32i(Test_aL_BFu0i_BFu32i, "aL_BFu0i_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu32ll()
{
  {
    init_simple_test("aL_BFu0i_BFu32ll");
    static aL_BFu0i_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu32ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu32ll(Test_aL_BFu0i_BFu32ll, "aL_BFu0i_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu33()
{
  {
    init_simple_test("aL_BFu0i_BFu33");
    static aL_BFu0i_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aL_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu33)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu0i_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu33(Test_aL_BFu0i_BFu33, "aL_BFu0i_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu7c()
{
  {
    init_simple_test("aL_BFu0i_BFu7c");
    static aL_BFu0i_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu7c)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu7c(Test_aL_BFu0i_BFu7c, "aL_BFu0i_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu7i()
{
  {
    init_simple_test("aL_BFu0i_BFu7i");
    static aL_BFu0i_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu7i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu7i(Test_aL_BFu0i_BFu7i, "aL_BFu0i_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu7ll()
{
  {
    init_simple_test("aL_BFu0i_BFu7ll");
    static aL_BFu0i_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu7ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu7ll(Test_aL_BFu0i_BFu7ll, "aL_BFu0i_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu7s()
{
  {
    init_simple_test("aL_BFu0i_BFu7s");
    static aL_BFu0i_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu7s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu7s(Test_aL_BFu0i_BFu7s, "aL_BFu0i_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu8c()
{
  {
    init_simple_test("aL_BFu0i_BFu8c");
    static aL_BFu0i_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu8c)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu8c(Test_aL_BFu0i_BFu8c, "aL_BFu0i_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu8i()
{
  {
    init_simple_test("aL_BFu0i_BFu8i");
    static aL_BFu0i_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu8i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu8i(Test_aL_BFu0i_BFu8i, "aL_BFu0i_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu8ll()
{
  {
    init_simple_test("aL_BFu0i_BFu8ll");
    static aL_BFu0i_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu8ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu8ll(Test_aL_BFu0i_BFu8ll, "aL_BFu0i_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu8s()
{
  {
    init_simple_test("aL_BFu0i_BFu8s");
    static aL_BFu0i_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu8s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu8s(Test_aL_BFu0i_BFu8s, "aL_BFu0i_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu9i()
{
  {
    init_simple_test("aL_BFu0i_BFu9i");
    static aL_BFu0i_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu9i)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu9i(Test_aL_BFu0i_BFu9i, "aL_BFu0i_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu9ll()
{
  {
    init_simple_test("aL_BFu0i_BFu9ll");
    static aL_BFu0i_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu9ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu9ll(Test_aL_BFu0i_BFu9ll, "aL_BFu0i_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_BFu9s()
{
  {
    init_simple_test("aL_BFu0i_BFu9s");
    static aL_BFu0i_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_BFu9s)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_BFu9s(Test_aL_BFu0i_BFu9s, "aL_BFu0i_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_C()
{
  {
    init_simple_test("aL_BFu0i_C");
    static aL_BFu0i_C lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_C)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_C.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_C(Test_aL_BFu0i_C, "aL_BFu0i_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_D()
{
  {
    init_simple_test("aL_BFu0i_D");
    static aL_BFu0i_D lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_D)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_D.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_D(Test_aL_BFu0i_D, "aL_BFu0i_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_F()
{
  {
    init_simple_test("aL_BFu0i_F");
    static aL_BFu0i_F lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_F)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_F.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_F(Test_aL_BFu0i_F, "aL_BFu0i_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_I()
{
  {
    init_simple_test("aL_BFu0i_I");
    static aL_BFu0i_I lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_I)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_I.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_I(Test_aL_BFu0i_I, "aL_BFu0i_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Ip()
{
  {
    init_simple_test("aL_BFu0i_Ip");
    static aL_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Ip.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Ip(Test_aL_BFu0i_Ip, "aL_BFu0i_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_L()
{
  {
    init_simple_test("aL_BFu0i_L");
    static aL_BFu0i_L lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_L)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_L.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_L(Test_aL_BFu0i_L, "aL_BFu0i_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_S()
{
  {
    init_simple_test("aL_BFu0i_S");
    static aL_BFu0i_S lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_S)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_S.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_S(Test_aL_BFu0i_S, "aL_BFu0i_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Uc()
{
  {
    init_simple_test("aL_BFu0i_Uc");
    static aL_BFu0i_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Uc.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Uc(Test_aL_BFu0i_Uc, "aL_BFu0i_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Ui()
{
  {
    init_simple_test("aL_BFu0i_Ui");
    static aL_BFu0i_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Ui.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Ui(Test_aL_BFu0i_Ui, "aL_BFu0i_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Ul()
{
  {
    init_simple_test("aL_BFu0i_Ul");
    static aL_BFu0i_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Ul.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Ul(Test_aL_BFu0i_Ul, "aL_BFu0i_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Us()
{
  {
    init_simple_test("aL_BFu0i_Us");
    static aL_BFu0i_Us lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Us.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Us(Test_aL_BFu0i_Us, "aL_BFu0i_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0i_Vp()
{
  {
    init_simple_test("aL_BFu0i_Vp");
    static aL_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "aL_BFu0i_Vp.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0i_Vp(Test_aL_BFu0i_Vp, "aL_BFu0i_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll()
{
  {
    init_simple_test("aL_BFu0ll");
    static aL_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll(Test_aL_BFu0ll, "aL_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu0c()
{
  {
    init_simple_test("aL_BFu0ll_BFu0c");
    static aL_BFu0ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu0c(Test_aL_BFu0ll_BFu0c, "aL_BFu0ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu0i()
{
  {
    init_simple_test("aL_BFu0ll_BFu0i");
    static aL_BFu0ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu0i(Test_aL_BFu0ll_BFu0i, "aL_BFu0ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu0ll");
    static aL_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu0ll(Test_aL_BFu0ll_BFu0ll, "aL_BFu0ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu0s()
{
  {
    init_simple_test("aL_BFu0ll_BFu0s");
    static aL_BFu0ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu0s(Test_aL_BFu0ll_BFu0s, "aL_BFu0ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu15i()
{
  {
    init_simple_test("aL_BFu0ll_BFu15i");
    static aL_BFu0ll_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu15i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu15i(Test_aL_BFu0ll_BFu15i, "aL_BFu0ll_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu15ll");
    static aL_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu15ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu15ll(Test_aL_BFu0ll_BFu15ll, "aL_BFu0ll_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu15s()
{
  {
    init_simple_test("aL_BFu0ll_BFu15s");
    static aL_BFu0ll_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu15s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu15s(Test_aL_BFu0ll_BFu15s, "aL_BFu0ll_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu16i()
{
  {
    init_simple_test("aL_BFu0ll_BFu16i");
    static aL_BFu0ll_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu16i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu16i(Test_aL_BFu0ll_BFu16i, "aL_BFu0ll_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu16ll");
    static aL_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu16ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu16ll(Test_aL_BFu0ll_BFu16ll, "aL_BFu0ll_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu16s()
{
  {
    init_simple_test("aL_BFu0ll_BFu16s");
    static aL_BFu0ll_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu16s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu16s(Test_aL_BFu0ll_BFu16s, "aL_BFu0ll_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu17i()
{
  {
    init_simple_test("aL_BFu0ll_BFu17i");
    static aL_BFu0ll_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu17i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu17i(Test_aL_BFu0ll_BFu17i, "aL_BFu0ll_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu17ll");
    static aL_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu17ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu17ll(Test_aL_BFu0ll_BFu17ll, "aL_BFu0ll_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu1c()
{
  {
    init_simple_test("aL_BFu0ll_BFu1c");
    static aL_BFu0ll_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu1c)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu1c(Test_aL_BFu0ll_BFu1c, "aL_BFu0ll_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu1i()
{
  {
    init_simple_test("aL_BFu0ll_BFu1i");
    static aL_BFu0ll_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu1i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu1i(Test_aL_BFu0ll_BFu1i, "aL_BFu0ll_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu1ll");
    static aL_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu1ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu1ll(Test_aL_BFu0ll_BFu1ll, "aL_BFu0ll_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu1s()
{
  {
    init_simple_test("aL_BFu0ll_BFu1s");
    static aL_BFu0ll_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu1s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu1s(Test_aL_BFu0ll_BFu1s, "aL_BFu0ll_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu31i()
{
  {
    init_simple_test("aL_BFu0ll_BFu31i");
    static aL_BFu0ll_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu31i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu31i(Test_aL_BFu0ll_BFu31i, "aL_BFu0ll_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu31ll");
    static aL_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu31ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu31ll(Test_aL_BFu0ll_BFu31ll, "aL_BFu0ll_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu32i()
{
  {
    init_simple_test("aL_BFu0ll_BFu32i");
    static aL_BFu0ll_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu32i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu32i(Test_aL_BFu0ll_BFu32i, "aL_BFu0ll_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu32ll");
    static aL_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu32ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu32ll(Test_aL_BFu0ll_BFu32ll, "aL_BFu0ll_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu33()
{
  {
    init_simple_test("aL_BFu0ll_BFu33");
    static aL_BFu0ll_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aL_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu33)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu33(Test_aL_BFu0ll_BFu33, "aL_BFu0ll_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu7c()
{
  {
    init_simple_test("aL_BFu0ll_BFu7c");
    static aL_BFu0ll_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu7c)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu7c(Test_aL_BFu0ll_BFu7c, "aL_BFu0ll_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu7i()
{
  {
    init_simple_test("aL_BFu0ll_BFu7i");
    static aL_BFu0ll_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu7i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu7i(Test_aL_BFu0ll_BFu7i, "aL_BFu0ll_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu7ll");
    static aL_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu7ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu7ll(Test_aL_BFu0ll_BFu7ll, "aL_BFu0ll_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu7s()
{
  {
    init_simple_test("aL_BFu0ll_BFu7s");
    static aL_BFu0ll_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu7s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu7s(Test_aL_BFu0ll_BFu7s, "aL_BFu0ll_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu8c()
{
  {
    init_simple_test("aL_BFu0ll_BFu8c");
    static aL_BFu0ll_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu8c)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu8c(Test_aL_BFu0ll_BFu8c, "aL_BFu0ll_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu8i()
{
  {
    init_simple_test("aL_BFu0ll_BFu8i");
    static aL_BFu0ll_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu8i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu8i(Test_aL_BFu0ll_BFu8i, "aL_BFu0ll_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu8ll");
    static aL_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu8ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu8ll(Test_aL_BFu0ll_BFu8ll, "aL_BFu0ll_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu8s()
{
  {
    init_simple_test("aL_BFu0ll_BFu8s");
    static aL_BFu0ll_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu8s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu8s(Test_aL_BFu0ll_BFu8s, "aL_BFu0ll_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu9i()
{
  {
    init_simple_test("aL_BFu0ll_BFu9i");
    static aL_BFu0ll_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu9i)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu9i(Test_aL_BFu0ll_BFu9i, "aL_BFu0ll_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aL_BFu0ll_BFu9ll");
    static aL_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu9ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu9ll(Test_aL_BFu0ll_BFu9ll, "aL_BFu0ll_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_BFu9s()
{
  {
    init_simple_test("aL_BFu0ll_BFu9s");
    static aL_BFu0ll_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_BFu9s)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_BFu9s(Test_aL_BFu0ll_BFu9s, "aL_BFu0ll_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_C()
{
  {
    init_simple_test("aL_BFu0ll_C");
    static aL_BFu0ll_C lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_C.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_C(Test_aL_BFu0ll_C, "aL_BFu0ll_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_D()
{
  {
    init_simple_test("aL_BFu0ll_D");
    static aL_BFu0ll_D lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_D.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_D(Test_aL_BFu0ll_D, "aL_BFu0ll_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_F()
{
  {
    init_simple_test("aL_BFu0ll_F");
    static aL_BFu0ll_F lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_F.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_F(Test_aL_BFu0ll_F, "aL_BFu0ll_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_I()
{
  {
    init_simple_test("aL_BFu0ll_I");
    static aL_BFu0ll_I lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_I.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_I(Test_aL_BFu0ll_I, "aL_BFu0ll_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Ip()
{
  {
    init_simple_test("aL_BFu0ll_Ip");
    static aL_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Ip.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Ip(Test_aL_BFu0ll_Ip, "aL_BFu0ll_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_L()
{
  {
    init_simple_test("aL_BFu0ll_L");
    static aL_BFu0ll_L lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_L.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_L(Test_aL_BFu0ll_L, "aL_BFu0ll_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_S()
{
  {
    init_simple_test("aL_BFu0ll_S");
    static aL_BFu0ll_S lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_S.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_S(Test_aL_BFu0ll_S, "aL_BFu0ll_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Uc()
{
  {
    init_simple_test("aL_BFu0ll_Uc");
    static aL_BFu0ll_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Uc.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Uc(Test_aL_BFu0ll_Uc, "aL_BFu0ll_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Ui()
{
  {
    init_simple_test("aL_BFu0ll_Ui");
    static aL_BFu0ll_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Ui.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Ui(Test_aL_BFu0ll_Ui, "aL_BFu0ll_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Ul()
{
  {
    init_simple_test("aL_BFu0ll_Ul");
    static aL_BFu0ll_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Ul.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Ul(Test_aL_BFu0ll_Ul, "aL_BFu0ll_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Us()
{
  {
    init_simple_test("aL_BFu0ll_Us");
    static aL_BFu0ll_Us lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Us.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Us(Test_aL_BFu0ll_Us, "aL_BFu0ll_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0ll_Vp()
{
  {
    init_simple_test("aL_BFu0ll_Vp");
    static aL_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "aL_BFu0ll_Vp.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0ll_Vp(Test_aL_BFu0ll_Vp, "aL_BFu0ll_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s()
{
  {
    init_simple_test("aL_BFu0s");
    static aL_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0s(Test_aL_BFu0s, "aL_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu0c()
{
  {
    init_simple_test("aL_BFu0s_BFu0c");
    static aL_BFu0s_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu0c(Test_aL_BFu0s_BFu0c, "aL_BFu0s_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu0i()
{
  {
    init_simple_test("aL_BFu0s_BFu0i");
    static aL_BFu0s_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu0i(Test_aL_BFu0s_BFu0i, "aL_BFu0s_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu0ll()
{
  {
    init_simple_test("aL_BFu0s_BFu0ll");
    static aL_BFu0s_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu0ll(Test_aL_BFu0s_BFu0ll, "aL_BFu0s_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu0s()
{
  {
    init_simple_test("aL_BFu0s_BFu0s");
    static aL_BFu0s_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aL_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu0s(Test_aL_BFu0s_BFu0s, "aL_BFu0s_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu15i()
{
  {
    init_simple_test("aL_BFu0s_BFu15i");
    static aL_BFu0s_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu15i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu15i(Test_aL_BFu0s_BFu15i, "aL_BFu0s_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu15ll()
{
  {
    init_simple_test("aL_BFu0s_BFu15ll");
    static aL_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu15ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu15ll(Test_aL_BFu0s_BFu15ll, "aL_BFu0s_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu15s()
{
  {
    init_simple_test("aL_BFu0s_BFu15s");
    static aL_BFu0s_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu15s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu15s(Test_aL_BFu0s_BFu15s, "aL_BFu0s_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu16i()
{
  {
    init_simple_test("aL_BFu0s_BFu16i");
    static aL_BFu0s_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu16i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu16i(Test_aL_BFu0s_BFu16i, "aL_BFu0s_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu16ll()
{
  {
    init_simple_test("aL_BFu0s_BFu16ll");
    static aL_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu16ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu16ll(Test_aL_BFu0s_BFu16ll, "aL_BFu0s_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu16s()
{
  {
    init_simple_test("aL_BFu0s_BFu16s");
    static aL_BFu0s_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu16s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu16s(Test_aL_BFu0s_BFu16s, "aL_BFu0s_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu17i()
{
  {
    init_simple_test("aL_BFu0s_BFu17i");
    static aL_BFu0s_BFu17i lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu17i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu17i(Test_aL_BFu0s_BFu17i, "aL_BFu0s_BFu17i", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu17ll()
{
  {
    init_simple_test("aL_BFu0s_BFu17ll");
    static aL_BFu0s_BFu17ll lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu17ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu17ll(Test_aL_BFu0s_BFu17ll, "aL_BFu0s_BFu17ll", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu1c()
{
  {
    init_simple_test("aL_BFu0s_BFu1c");
    static aL_BFu0s_BFu1c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu1c)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu1c(Test_aL_BFu0s_BFu1c, "aL_BFu0s_BFu1c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu1i()
{
  {
    init_simple_test("aL_BFu0s_BFu1i");
    static aL_BFu0s_BFu1i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu1i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu1i(Test_aL_BFu0s_BFu1i, "aL_BFu0s_BFu1i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu1ll()
{
  {
    init_simple_test("aL_BFu0s_BFu1ll");
    static aL_BFu0s_BFu1ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu1ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu1ll(Test_aL_BFu0s_BFu1ll, "aL_BFu0s_BFu1ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu1s()
{
  {
    init_simple_test("aL_BFu0s_BFu1s");
    static aL_BFu0s_BFu1s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu1s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu1s(Test_aL_BFu0s_BFu1s, "aL_BFu0s_BFu1s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu31i()
{
  {
    init_simple_test("aL_BFu0s_BFu31i");
    static aL_BFu0s_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu31i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu31i(Test_aL_BFu0s_BFu31i, "aL_BFu0s_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu31ll()
{
  {
    init_simple_test("aL_BFu0s_BFu31ll");
    static aL_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu31ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu31ll(Test_aL_BFu0s_BFu31ll, "aL_BFu0s_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu32i()
{
  {
    init_simple_test("aL_BFu0s_BFu32i");
    static aL_BFu0s_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu32i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu32i(Test_aL_BFu0s_BFu32i, "aL_BFu0s_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu32ll()
{
  {
    init_simple_test("aL_BFu0s_BFu32ll");
    static aL_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu32ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu32ll(Test_aL_BFu0s_BFu32ll, "aL_BFu0s_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu33()
{
  {
    init_simple_test("aL_BFu0s_BFu33");
    static aL_BFu0s_BFu33 lv;
    check2(sizeof(lv), 13, "sizeof(aL_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu33)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu33(Test_aL_BFu0s_BFu33, "aL_BFu0s_BFu33", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu7c()
{
  {
    init_simple_test("aL_BFu0s_BFu7c");
    static aL_BFu0s_BFu7c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu7c)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu7c(Test_aL_BFu0s_BFu7c, "aL_BFu0s_BFu7c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu7i()
{
  {
    init_simple_test("aL_BFu0s_BFu7i");
    static aL_BFu0s_BFu7i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu7i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu7i(Test_aL_BFu0s_BFu7i, "aL_BFu0s_BFu7i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu7ll()
{
  {
    init_simple_test("aL_BFu0s_BFu7ll");
    static aL_BFu0s_BFu7ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu7ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu7ll(Test_aL_BFu0s_BFu7ll, "aL_BFu0s_BFu7ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu7s()
{
  {
    init_simple_test("aL_BFu0s_BFu7s");
    static aL_BFu0s_BFu7s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu7s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu7s(Test_aL_BFu0s_BFu7s, "aL_BFu0s_BFu7s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu8c()
{
  {
    init_simple_test("aL_BFu0s_BFu8c");
    static aL_BFu0s_BFu8c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu8c)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu8c(Test_aL_BFu0s_BFu8c, "aL_BFu0s_BFu8c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu8i()
{
  {
    init_simple_test("aL_BFu0s_BFu8i");
    static aL_BFu0s_BFu8i lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu8i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu8i(Test_aL_BFu0s_BFu8i, "aL_BFu0s_BFu8i", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu8ll()
{
  {
    init_simple_test("aL_BFu0s_BFu8ll");
    static aL_BFu0s_BFu8ll lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu8ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu8ll(Test_aL_BFu0s_BFu8ll, "aL_BFu0s_BFu8ll", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu8s()
{
  {
    init_simple_test("aL_BFu0s_BFu8s");
    static aL_BFu0s_BFu8s lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu8s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "aL_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "aL_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu8s(Test_aL_BFu0s_BFu8s, "aL_BFu0s_BFu8s", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu9i()
{
  {
    init_simple_test("aL_BFu0s_BFu9i");
    static aL_BFu0s_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu9i)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu9i(Test_aL_BFu0s_BFu9i, "aL_BFu0s_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu9ll()
{
  {
    init_simple_test("aL_BFu0s_BFu9ll");
    static aL_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu9ll)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu9ll(Test_aL_BFu0s_BFu9ll, "aL_BFu0s_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_BFu9s()
{
  {
    init_simple_test("aL_BFu0s_BFu9s");
    static aL_BFu0s_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_BFu9s)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "aL_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "aL_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_BFu9s(Test_aL_BFu0s_BFu9s, "aL_BFu0s_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_C()
{
  {
    init_simple_test("aL_BFu0s_C");
    static aL_BFu0s_C lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_C)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_C.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_C(Test_aL_BFu0s_C, "aL_BFu0s_C", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_D()
{
  {
    init_simple_test("aL_BFu0s_D");
    static aL_BFu0s_D lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_D)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_D.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_D(Test_aL_BFu0s_D, "aL_BFu0s_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_F()
{
  {
    init_simple_test("aL_BFu0s_F");
    static aL_BFu0s_F lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_F)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_F.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_F(Test_aL_BFu0s_F, "aL_BFu0s_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_I()
{
  {
    init_simple_test("aL_BFu0s_I");
    static aL_BFu0s_I lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_I)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_I.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_I(Test_aL_BFu0s_I, "aL_BFu0s_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Ip()
{
  {
    init_simple_test("aL_BFu0s_Ip");
    static aL_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Ip.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Ip(Test_aL_BFu0s_Ip, "aL_BFu0s_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_L()
{
  {
    init_simple_test("aL_BFu0s_L");
    static aL_BFu0s_L lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_L)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_L.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_L(Test_aL_BFu0s_L, "aL_BFu0s_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_S()
{
  {
    init_simple_test("aL_BFu0s_S");
    static aL_BFu0s_S lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_S)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_S.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_S(Test_aL_BFu0s_S, "aL_BFu0s_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Uc()
{
  {
    init_simple_test("aL_BFu0s_Uc");
    static aL_BFu0s_Uc lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Uc.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Uc(Test_aL_BFu0s_Uc, "aL_BFu0s_Uc", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Ui()
{
  {
    init_simple_test("aL_BFu0s_Ui");
    static aL_BFu0s_Ui lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Ui.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Ui(Test_aL_BFu0s_Ui, "aL_BFu0s_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Ul()
{
  {
    init_simple_test("aL_BFu0s_Ul");
    static aL_BFu0s_Ul lv;
    check2(sizeof(lv), 16, "sizeof(aL_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Ul.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Ul(Test_aL_BFu0s_Ul, "aL_BFu0s_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Us()
{
  {
    init_simple_test("aL_BFu0s_Us");
    static aL_BFu0s_Us lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Us.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Us(Test_aL_BFu0s_Us, "aL_BFu0s_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu0s_Vp()
{
  {
    init_simple_test("aL_BFu0s_Vp");
    static aL_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "aL_BFu0s_Vp.v1");
    check_field_offset(lv, v2, 8, "aL_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaL_BFu0s_Vp(Test_aL_BFu0s_Vp, "aL_BFu0s_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15i_BFu0c()
{
  {
    init_simple_test("aL_BFu15i_BFu0c");
    static aL_BFu15i_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu15i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu15i_BFu0c(Test_aL_BFu15i_BFu0c, "aL_BFu15i_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15i_BFu0i()
{
  {
    init_simple_test("aL_BFu15i_BFu0i");
    static aL_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu15i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu15i_BFu0i(Test_aL_BFu15i_BFu0i, "aL_BFu15i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15i_BFu0ll()
{
  {
    init_simple_test("aL_BFu15i_BFu0ll");
    static aL_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu15i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu15i_BFu0ll(Test_aL_BFu15i_BFu0ll, "aL_BFu15i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15i_BFu0s()
{
  {
    init_simple_test("aL_BFu15i_BFu0s");
    static aL_BFu15i_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu15i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu15i_BFu0s(Test_aL_BFu15i_BFu0s, "aL_BFu15i_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15ll_BFu0c()
{
  {
    init_simple_test("aL_BFu15ll_BFu0c");
    static aL_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu15ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu15ll_BFu0c(Test_aL_BFu15ll_BFu0c, "aL_BFu15ll_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15ll_BFu0i()
{
  {
    init_simple_test("aL_BFu15ll_BFu0i");
    static aL_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu15ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu15ll_BFu0i(Test_aL_BFu15ll_BFu0i, "aL_BFu15ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu15ll_BFu0ll");
    static aL_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu15ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu15ll_BFu0ll(Test_aL_BFu15ll_BFu0ll, "aL_BFu15ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15ll_BFu0s()
{
  {
    init_simple_test("aL_BFu15ll_BFu0s");
    static aL_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu15ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu15ll_BFu0s(Test_aL_BFu15ll_BFu0s, "aL_BFu15ll_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15s_BFu0c()
{
  {
    init_simple_test("aL_BFu15s_BFu0c");
    static aL_BFu15s_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15s_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu15s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu15s_BFu0c(Test_aL_BFu15s_BFu0c, "aL_BFu15s_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15s_BFu0i()
{
  {
    init_simple_test("aL_BFu15s_BFu0i");
    static aL_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15s_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu15s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu15s_BFu0i(Test_aL_BFu15s_BFu0i, "aL_BFu15s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15s_BFu0ll()
{
  {
    init_simple_test("aL_BFu15s_BFu0ll");
    static aL_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu15s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu15s_BFu0ll(Test_aL_BFu15s_BFu0ll, "aL_BFu15s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu15s_BFu0s()
{
  {
    init_simple_test("aL_BFu15s_BFu0s");
    static aL_BFu15s_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu15s_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu15s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "aL_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "aL_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu15s_BFu0s(Test_aL_BFu15s_BFu0s, "aL_BFu15s_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16i_BFu0c()
{
  {
    init_simple_test("aL_BFu16i_BFu0c");
    static aL_BFu16i_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu16i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu16i_BFu0c(Test_aL_BFu16i_BFu0c, "aL_BFu16i_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16i_BFu0i()
{
  {
    init_simple_test("aL_BFu16i_BFu0i");
    static aL_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu16i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu16i_BFu0i(Test_aL_BFu16i_BFu0i, "aL_BFu16i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16i_BFu0ll()
{
  {
    init_simple_test("aL_BFu16i_BFu0ll");
    static aL_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu16i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu16i_BFu0ll(Test_aL_BFu16i_BFu0ll, "aL_BFu16i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16i_BFu0s()
{
  {
    init_simple_test("aL_BFu16i_BFu0s");
    static aL_BFu16i_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu16i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu16i_BFu0s(Test_aL_BFu16i_BFu0s, "aL_BFu16i_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16ll_BFu0c()
{
  {
    init_simple_test("aL_BFu16ll_BFu0c");
    static aL_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu16ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu16ll_BFu0c(Test_aL_BFu16ll_BFu0c, "aL_BFu16ll_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16ll_BFu0i()
{
  {
    init_simple_test("aL_BFu16ll_BFu0i");
    static aL_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu16ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu16ll_BFu0i(Test_aL_BFu16ll_BFu0i, "aL_BFu16ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu16ll_BFu0ll");
    static aL_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu16ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu16ll_BFu0ll(Test_aL_BFu16ll_BFu0ll, "aL_BFu16ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16ll_BFu0s()
{
  {
    init_simple_test("aL_BFu16ll_BFu0s");
    static aL_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu16ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu16ll_BFu0s(Test_aL_BFu16ll_BFu0s, "aL_BFu16ll_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16s_BFu0c()
{
  {
    init_simple_test("aL_BFu16s_BFu0c");
    static aL_BFu16s_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16s_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu16s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu16s_BFu0c(Test_aL_BFu16s_BFu0c, "aL_BFu16s_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16s_BFu0i()
{
  {
    init_simple_test("aL_BFu16s_BFu0i");
    static aL_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16s_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu16s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu16s_BFu0i(Test_aL_BFu16s_BFu0i, "aL_BFu16s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16s_BFu0ll()
{
  {
    init_simple_test("aL_BFu16s_BFu0ll");
    static aL_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu16s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu16s_BFu0ll(Test_aL_BFu16s_BFu0ll, "aL_BFu16s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu16s_BFu0s()
{
  {
    init_simple_test("aL_BFu16s_BFu0s");
    static aL_BFu16s_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(aL_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu16s_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu16s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "aL_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "aL_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu16s_BFu0s(Test_aL_BFu16s_BFu0s, "aL_BFu16s_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17i_BFu0c()
{
  {
    init_simple_test("aL_BFu17i_BFu0c");
    static aL_BFu17i_BFu0c lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu17i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu17i_BFu0c(Test_aL_BFu17i_BFu0c, "aL_BFu17i_BFu0c", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17i_BFu0i()
{
  {
    init_simple_test("aL_BFu17i_BFu0i");
    static aL_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu17i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu17i_BFu0i(Test_aL_BFu17i_BFu0i, "aL_BFu17i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17i_BFu0ll()
{
  {
    init_simple_test("aL_BFu17i_BFu0ll");
    static aL_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu17i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu17i_BFu0ll(Test_aL_BFu17i_BFu0ll, "aL_BFu17i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17i_BFu0s()
{
  {
    init_simple_test("aL_BFu17i_BFu0s");
    static aL_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu17i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu17i_BFu0s(Test_aL_BFu17i_BFu0s, "aL_BFu17i_BFu0s", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17ll_BFu0c()
{
  {
    init_simple_test("aL_BFu17ll_BFu0c");
    static aL_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 11, "sizeof(aL_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu17ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu17ll_BFu0c(Test_aL_BFu17ll_BFu0c, "aL_BFu17ll_BFu0c", 11);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17ll_BFu0i()
{
  {
    init_simple_test("aL_BFu17ll_BFu0i");
    static aL_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu17ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu17ll_BFu0i(Test_aL_BFu17ll_BFu0i, "aL_BFu17ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu17ll_BFu0ll");
    static aL_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu17ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu17ll_BFu0ll(Test_aL_BFu17ll_BFu0ll, "aL_BFu17ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu17ll_BFu0s()
{
  {
    init_simple_test("aL_BFu17ll_BFu0s");
    static aL_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu17ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu17ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "aL_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "aL_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu17ll_BFu0s(Test_aL_BFu17ll_BFu0s, "aL_BFu17ll_BFu0s", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1c_BFu0c()
{
  {
    init_simple_test("aL_BFu1c_BFu0c");
    static aL_BFu1c_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1c_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu1c_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu1c_BFu0c(Test_aL_BFu1c_BFu0c, "aL_BFu1c_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1c_BFu0i()
{
  {
    init_simple_test("aL_BFu1c_BFu0i");
    static aL_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1c_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu1c_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu1c_BFu0i(Test_aL_BFu1c_BFu0i, "aL_BFu1c_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1c_BFu0ll()
{
  {
    init_simple_test("aL_BFu1c_BFu0ll");
    static aL_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu1c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu1c_BFu0ll(Test_aL_BFu1c_BFu0ll, "aL_BFu1c_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1c_BFu0s()
{
  {
    init_simple_test("aL_BFu1c_BFu0s");
    static aL_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1c_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu1c_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu1c_BFu0s(Test_aL_BFu1c_BFu0s, "aL_BFu1c_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1i_BFu0c()
{
  {
    init_simple_test("aL_BFu1i_BFu0c");
    static aL_BFu1i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu1i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu1i_BFu0c(Test_aL_BFu1i_BFu0c, "aL_BFu1i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1i_BFu0i()
{
  {
    init_simple_test("aL_BFu1i_BFu0i");
    static aL_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu1i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu1i_BFu0i(Test_aL_BFu1i_BFu0i, "aL_BFu1i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1i_BFu0ll()
{
  {
    init_simple_test("aL_BFu1i_BFu0ll");
    static aL_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu1i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu1i_BFu0ll(Test_aL_BFu1i_BFu0ll, "aL_BFu1i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1i_BFu0s()
{
  {
    init_simple_test("aL_BFu1i_BFu0s");
    static aL_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu1i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu1i_BFu0s(Test_aL_BFu1i_BFu0s, "aL_BFu1i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1ll_BFu0c()
{
  {
    init_simple_test("aL_BFu1ll_BFu0c");
    static aL_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu1ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu1ll_BFu0c(Test_aL_BFu1ll_BFu0c, "aL_BFu1ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1ll_BFu0i()
{
  {
    init_simple_test("aL_BFu1ll_BFu0i");
    static aL_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu1ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu1ll_BFu0i(Test_aL_BFu1ll_BFu0i, "aL_BFu1ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu1ll_BFu0ll");
    static aL_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu1ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu1ll_BFu0ll(Test_aL_BFu1ll_BFu0ll, "aL_BFu1ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1ll_BFu0s()
{
  {
    init_simple_test("aL_BFu1ll_BFu0s");
    static aL_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu1ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu1ll_BFu0s(Test_aL_BFu1ll_BFu0s, "aL_BFu1ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1s_BFu0c()
{
  {
    init_simple_test("aL_BFu1s_BFu0c");
    static aL_BFu1s_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1s_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu1s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu1s_BFu0c(Test_aL_BFu1s_BFu0c, "aL_BFu1s_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1s_BFu0i()
{
  {
    init_simple_test("aL_BFu1s_BFu0i");
    static aL_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1s_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu1s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu1s_BFu0i(Test_aL_BFu1s_BFu0i, "aL_BFu1s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1s_BFu0ll()
{
  {
    init_simple_test("aL_BFu1s_BFu0ll");
    static aL_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu1s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu1s_BFu0ll(Test_aL_BFu1s_BFu0ll, "aL_BFu1s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu1s_BFu0s()
{
  {
    init_simple_test("aL_BFu1s_BFu0s");
    static aL_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu1s_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu1s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "aL_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu1s_BFu0s(Test_aL_BFu1s_BFu0s, "aL_BFu1s_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31i_BFu0c()
{
  {
    init_simple_test("aL_BFu31i_BFu0c");
    static aL_BFu31i_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu31i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu31i_BFu0c(Test_aL_BFu31i_BFu0c, "aL_BFu31i_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31i_BFu0i()
{
  {
    init_simple_test("aL_BFu31i_BFu0i");
    static aL_BFu31i_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu31i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu31i_BFu0i(Test_aL_BFu31i_BFu0i, "aL_BFu31i_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31i_BFu0ll()
{
  {
    init_simple_test("aL_BFu31i_BFu0ll");
    static aL_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu31i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu31i_BFu0ll(Test_aL_BFu31i_BFu0ll, "aL_BFu31i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31i_BFu0s()
{
  {
    init_simple_test("aL_BFu31i_BFu0s");
    static aL_BFu31i_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu31i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu31i_BFu0s(Test_aL_BFu31i_BFu0s, "aL_BFu31i_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31ll_BFu0c()
{
  {
    init_simple_test("aL_BFu31ll_BFu0c");
    static aL_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu31ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu31ll_BFu0c(Test_aL_BFu31ll_BFu0c, "aL_BFu31ll_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31ll_BFu0i()
{
  {
    init_simple_test("aL_BFu31ll_BFu0i");
    static aL_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu31ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu31ll_BFu0i(Test_aL_BFu31ll_BFu0i, "aL_BFu31ll_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu31ll_BFu0ll");
    static aL_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu31ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu31ll_BFu0ll(Test_aL_BFu31ll_BFu0ll, "aL_BFu31ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu31ll_BFu0s()
{
  {
    init_simple_test("aL_BFu31ll_BFu0s");
    static aL_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu31ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu31ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "aL_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "aL_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu31ll_BFu0s(Test_aL_BFu31ll_BFu0s, "aL_BFu31ll_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32i_BFu0c()
{
  {
    init_simple_test("aL_BFu32i_BFu0c");
    static aL_BFu32i_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu32i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu32i_BFu0c(Test_aL_BFu32i_BFu0c, "aL_BFu32i_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32i_BFu0i()
{
  {
    init_simple_test("aL_BFu32i_BFu0i");
    static aL_BFu32i_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu32i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu32i_BFu0i(Test_aL_BFu32i_BFu0i, "aL_BFu32i_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32i_BFu0ll()
{
  {
    init_simple_test("aL_BFu32i_BFu0ll");
    static aL_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu32i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu32i_BFu0ll(Test_aL_BFu32i_BFu0ll, "aL_BFu32i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32i_BFu0s()
{
  {
    init_simple_test("aL_BFu32i_BFu0s");
    static aL_BFu32i_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu32i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu32i_BFu0s(Test_aL_BFu32i_BFu0s, "aL_BFu32i_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32ll_BFu0c()
{
  {
    init_simple_test("aL_BFu32ll_BFu0c");
    static aL_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu32ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu32ll_BFu0c(Test_aL_BFu32ll_BFu0c, "aL_BFu32ll_BFu0c", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32ll_BFu0i()
{
  {
    init_simple_test("aL_BFu32ll_BFu0i");
    static aL_BFu32ll_BFu0i lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu32ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu32ll_BFu0i(Test_aL_BFu32ll_BFu0i, "aL_BFu32ll_BFu0i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu32ll_BFu0ll");
    static aL_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu32ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu32ll_BFu0ll(Test_aL_BFu32ll_BFu0ll, "aL_BFu32ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu32ll_BFu0s()
{
  {
    init_simple_test("aL_BFu32ll_BFu0s");
    static aL_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 12, "sizeof(aL_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu32ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu32ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "aL_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "aL_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu32ll_BFu0s(Test_aL_BFu32ll_BFu0s, "aL_BFu32ll_BFu0s", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu33_BFu0c()
{
  {
    init_simple_test("aL_BFu33_BFu0c");
    static aL_BFu33_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aL_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu33_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu33_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu33_BFu0c(Test_aL_BFu33_BFu0c, "aL_BFu33_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu33_BFu0i()
{
  {
    init_simple_test("aL_BFu33_BFu0i");
    static aL_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aL_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu33_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu33_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu33_BFu0i(Test_aL_BFu33_BFu0i, "aL_BFu33_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu33_BFu0ll()
{
  {
    init_simple_test("aL_BFu33_BFu0ll");
    static aL_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aL_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu33_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu33_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu33_BFu0ll(Test_aL_BFu33_BFu0ll, "aL_BFu33_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu33_BFu0s()
{
  {
    init_simple_test("aL_BFu33_BFu0s");
    static aL_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aL_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu33_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu33_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "aL_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "aL_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu33_BFu0s(Test_aL_BFu33_BFu0s, "aL_BFu33_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7c_BFu0c()
{
  {
    init_simple_test("aL_BFu7c_BFu0c");
    static aL_BFu7c_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7c_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu7c_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu7c_BFu0c(Test_aL_BFu7c_BFu0c, "aL_BFu7c_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7c_BFu0i()
{
  {
    init_simple_test("aL_BFu7c_BFu0i");
    static aL_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7c_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu7c_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu7c_BFu0i(Test_aL_BFu7c_BFu0i, "aL_BFu7c_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7c_BFu0ll()
{
  {
    init_simple_test("aL_BFu7c_BFu0ll");
    static aL_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7c_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu7c_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu7c_BFu0ll(Test_aL_BFu7c_BFu0ll, "aL_BFu7c_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7c_BFu0s()
{
  {
    init_simple_test("aL_BFu7c_BFu0s");
    static aL_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7c_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu7c_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu7c_BFu0s(Test_aL_BFu7c_BFu0s, "aL_BFu7c_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7i_BFu0c()
{
  {
    init_simple_test("aL_BFu7i_BFu0c");
    static aL_BFu7i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7i_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu7i_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu7i_BFu0c(Test_aL_BFu7i_BFu0c, "aL_BFu7i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7i_BFu0i()
{
  {
    init_simple_test("aL_BFu7i_BFu0i");
    static aL_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7i_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu7i_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu7i_BFu0i(Test_aL_BFu7i_BFu0i, "aL_BFu7i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7i_BFu0ll()
{
  {
    init_simple_test("aL_BFu7i_BFu0ll");
    static aL_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7i_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu7i_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu7i_BFu0ll(Test_aL_BFu7i_BFu0ll, "aL_BFu7i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7i_BFu0s()
{
  {
    init_simple_test("aL_BFu7i_BFu0s");
    static aL_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7i_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu7i_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu7i_BFu0s(Test_aL_BFu7i_BFu0s, "aL_BFu7i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7ll_BFu0c()
{
  {
    init_simple_test("aL_BFu7ll_BFu0c");
    static aL_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7ll_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu7ll_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu7ll_BFu0c(Test_aL_BFu7ll_BFu0c, "aL_BFu7ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7ll_BFu0i()
{
  {
    init_simple_test("aL_BFu7ll_BFu0i");
    static aL_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7ll_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu7ll_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu7ll_BFu0i(Test_aL_BFu7ll_BFu0i, "aL_BFu7ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aL_BFu7ll_BFu0ll");
    static aL_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7ll_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu7ll_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu7ll_BFu0ll(Test_aL_BFu7ll_BFu0ll, "aL_BFu7ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7ll_BFu0s()
{
  {
    init_simple_test("aL_BFu7ll_BFu0s");
    static aL_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7ll_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu7ll_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu7ll_BFu0s(Test_aL_BFu7ll_BFu0s, "aL_BFu7ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7s_BFu0c()
{
  {
    init_simple_test("aL_BFu7s_BFu0c");
    static aL_BFu7s_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aL_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7s_BFu0c)");
    check_field_offset(lv, v1, 0, "aL_BFu7s_BFu0c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaL_BFu7s_BFu0c(Test_aL_BFu7s_BFu0c, "aL_BFu7s_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7s_BFu0i()
{
  {
    init_simple_test("aL_BFu7s_BFu0i");
    static aL_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aL_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7s_BFu0i)");
    check_field_offset(lv, v1, 0, "aL_BFu7s_BFu0i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaL_BFu7s_BFu0i(Test_aL_BFu7s_BFu0i, "aL_BFu7s_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7s_BFu0ll()
{
  {
    init_simple_test("aL_BFu7s_BFu0ll");
    static aL_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aL_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7s_BFu0ll)");
    check_field_offset(lv, v1, 0, "aL_BFu7s_BFu0ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaL_BFu7s_BFu0ll(Test_aL_BFu7s_BFu0ll, "aL_BFu7s_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aL_BFu7s_BFu0s()
{
  {
    init_simple_test("aL_BFu7s_BFu0s");
    static aL_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aL_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aL_BFu7s_BFu0s)");
    check_field_offset(lv, v1, 0, "aL_BFu7s_BFu0s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "aL_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "aL_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaL_BFu7s_BFu0s(Test_aL_BFu7s_BFu0s, "aL_BFu7s_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

