// 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)) aBFu33_BFu0c_Vp { unsigned long long v1:33; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0i { unsigned long long v1:33; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0c { unsigned long long v1:33; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0i { unsigned long long v1:33; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0ll { unsigned long long v1:33; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0s { unsigned long long v1:33; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15i { unsigned long long v1:33; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15s { unsigned long long v1:33; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16i { unsigned long long v1:33; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16s { unsigned long long v1:33; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu17i { unsigned long long v1:33; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu17ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1c { unsigned long long v1:33; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1i { unsigned long long v1:33; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1s { unsigned long long v1:33; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu31i { unsigned long long v1:33; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu31ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu32i { unsigned long long v1:33; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu32ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu33 { unsigned long long v1:33; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7c { unsigned long long v1:33; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7i { unsigned long long v1:33; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7s { unsigned long long v1:33; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8c { unsigned long long v1:33; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8i { unsigned long long v1:33; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8s { unsigned long long v1:33; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9i { unsigned long long v1:33; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9s { unsigned long long v1:33; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_C { unsigned long long v1:33; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0i_D { unsigned long long v1:33; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0i_F { unsigned long long v1:33; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0i_I { unsigned long long v1:33; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ip { unsigned long long v1:33; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0i_L { unsigned long long v1:33; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0i_S { unsigned long long v1:33; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Uc { unsigned long long v1:33; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ui { unsigned long long v1:33; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ul { unsigned long long v1:33; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Us { unsigned long long v1:33; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Vp { unsigned long long v1:33; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0ll { unsigned long long v1:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0c { unsigned long long v1:33; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0i { unsigned long long v1:33; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0ll { unsigned long long v1:33; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0s { unsigned long long v1:33; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu17i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu17ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu31i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu31ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu32i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu32ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu33 { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_C { unsigned long long v1:33; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_D { unsigned long long v1:33; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_F { unsigned long long v1:33; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_I { unsigned long long v1:33; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ip { unsigned long long v1:33; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_L { unsigned long long v1:33; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_S { unsigned long long v1:33; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Uc { unsigned long long v1:33; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ui { unsigned long long v1:33; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ul { unsigned long long v1:33; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Us { unsigned long long v1:33; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Vp { unsigned long long v1:33; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0s { unsigned long long v1:33; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0c { unsigned long long v1:33; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0i { unsigned long long v1:33; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0ll { unsigned long long v1:33; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0s { unsigned long long v1:33; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15i { unsigned long long v1:33; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15s { unsigned long long v1:33; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16i { unsigned long long v1:33; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16s { unsigned long long v1:33; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu17i { unsigned long long v1:33; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu17ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1c { unsigned long long v1:33; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1i { unsigned long long v1:33; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1s { unsigned long long v1:33; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu31i { unsigned long long v1:33; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu31ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu32i { unsigned long long v1:33; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu32ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu33 { unsigned long long v1:33; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7c { unsigned long long v1:33; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7i { unsigned long long v1:33; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7s { unsigned long long v1:33; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8c { unsigned long long v1:33; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8i { unsigned long long v1:33; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8s { unsigned long long v1:33; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9i { unsigned long long v1:33; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9s { unsigned long long v1:33; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_C { unsigned long long v1:33; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0s_D { unsigned long long v1:33; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0s_F { unsigned long long v1:33; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0s_I { unsigned long long v1:33; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ip { unsigned long long v1:33; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0s_L { unsigned long long v1:33; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0s_S { unsigned long long v1:33; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Uc { unsigned long long v1:33; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ui { unsigned long long v1:33; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ul { unsigned long long v1:33; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Us { unsigned long long v1:33; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Vp { unsigned long long v1:33; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0c { unsigned long long v1:33; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0i { unsigned long long v1:33; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0ll { unsigned long long v1:33; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0s { unsigned long long v1:33; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0c { unsigned long long v1:33; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0i { unsigned long long v1:33; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0s { unsigned long long v1:33; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0c { unsigned long long v1:33; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0i { unsigned long long v1:33; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0ll { unsigned long long v1:33; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0s { unsigned long long v1:33; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0c { unsigned long long v1:33; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0i { unsigned long long v1:33; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0ll { unsigned long long v1:33; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0s { unsigned long long v1:33; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0c { unsigned long long v1:33; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0i { unsigned long long v1:33; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0s { unsigned long long v1:33; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0c { unsigned long long v1:33; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0i { unsigned long long v1:33; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0ll { unsigned long long v1:33; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0s { unsigned long long v1:33; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0c { unsigned long long v1:33; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0i { unsigned long long v1:33; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0ll { unsigned long long v1:33; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0s { unsigned long long v1:33; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0c { unsigned long long v1:33; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0i { unsigned long long v1:33; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0s { unsigned long long v1:33; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0c { unsigned long long v1:33; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0i { unsigned long long v1:33; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0ll { unsigned long long v1:33; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0s { unsigned long long v1:33; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0c { unsigned long long v1:33; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0i { unsigned long long v1:33; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0ll { unsigned long long v1:33; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0s { unsigned long long v1:33; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0c { unsigned long long v1:33; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0i { unsigned long long v1:33; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0s { unsigned long long v1:33; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0c { unsigned long long v1:33; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0i { unsigned long long v1:33; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0ll { unsigned long long v1:33; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0s { unsigned long long v1:33; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0c { unsigned long long v1:33; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0i { unsigned long long v1:33; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0ll { unsigned long long v1:33; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0s { unsigned long long v1:33; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0c { unsigned long long v1:33; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0i { unsigned long long v1:33; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0s { unsigned long long v1:33; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0c { unsigned long long v1:33; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0i { unsigned long long v1:33; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0ll { unsigned long long v1:33; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0s { unsigned long long v1:33; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0c { unsigned long long v1:33; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0i { unsigned long long v1:33; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0s { unsigned long long v1:33; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0c { unsigned long long v1:33; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0i { unsigned long long v1:33; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0ll { unsigned long long v1:33; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0s { unsigned long long v1:33; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0c { unsigned long long v1:33; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0i { unsigned long long v1:33; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0ll { unsigned long long v1:33; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0s { unsigned long long v1:33; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0c { unsigned long long v1:33; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0i { unsigned long long v1:33; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0ll { unsigned long long v1:33; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0s { unsigned long long v1:33; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0c { unsigned long long v1:33; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0i { unsigned long long v1:33; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0s { unsigned long long v1:33; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0c { unsigned long long v1:33; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0i { unsigned long long v1:33; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0ll { unsigned long long v1:33; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0s { unsigned long long v1:33; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0c { unsigned long long v1:33; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0i { unsigned long long v1:33; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0ll { unsigned long long v1:33; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0s { unsigned long long v1:33; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0c { unsigned long long v1:33; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0i { unsigned long long v1:33; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0ll { unsigned long long v1:33; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0s { unsigned long long v1:33; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0c { unsigned long long v1:33; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0i { unsigned long long v1:33; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0s { unsigned long long v1:33; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0c { unsigned long long v1:33; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0i { unsigned long long v1:33; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0ll { unsigned long long v1:33; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0s { unsigned long long v1:33; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0c { unsigned long long v1:33; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0i { unsigned long long v1:33; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0ll { unsigned long long v1:33; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0s { unsigned long long v1:33; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0c { unsigned long long v1:33; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0i { unsigned long long v1:33; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0s { unsigned long long v1:33; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0c { unsigned long long v1:33; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0i { unsigned long long v1:33; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0ll { unsigned long long v1:33; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0s { unsigned long long v1:33; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_C_BFu0c { unsigned long long v1:33; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_C_BFu0i { unsigned long long v1:33; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_C_BFu0ll { unsigned long long v1:33; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_C_BFu0s { unsigned long long v1:33; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_D_BFu0c { unsigned long long v1:33; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_D_BFu0i { unsigned long long v1:33; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_D_BFu0ll { unsigned long long v1:33; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_D_BFu0s { unsigned long long v1:33; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_F_BFu0c { unsigned long long v1:33; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_F_BFu0i { unsigned long long v1:33; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_F_BFu0ll { unsigned long long v1:33; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_F_BFu0s { unsigned long long v1:33; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_I_BFu0c { unsigned long long v1:33; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_I_BFu0i { unsigned long long v1:33; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_I_BFu0ll { unsigned long long v1:33; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_I_BFu0s { unsigned long long v1:33; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0c { unsigned long long v1:33; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0i { unsigned long long v1:33; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0ll { unsigned long long v1:33; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0s { unsigned long long v1:33; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_L_BFu0c { unsigned long long v1:33; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_L_BFu0i { unsigned long long v1:33; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_L_BFu0ll { unsigned long long v1:33; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_L_BFu0s { unsigned long long v1:33; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_S_BFu0c { unsigned long long v1:33; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_S_BFu0i { unsigned long long v1:33; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_S_BFu0ll { unsigned long long v1:33; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_S_BFu0s { unsigned long long v1:33; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0c { unsigned long long v1:33; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0i { unsigned long long v1:33; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0ll { unsigned long long v1:33; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0s { unsigned long long v1:33; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0c { unsigned long long v1:33; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0i { unsigned long long v1:33; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0ll { unsigned long long v1:33; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0s { unsigned long long v1:33; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0c { unsigned long long v1:33; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0i { unsigned long long v1:33; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0ll { unsigned long long v1:33; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0s { unsigned long long v1:33; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0c { unsigned long long v1:33; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0i { unsigned long long v1:33; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0ll { unsigned long long v1:33; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0s { unsigned long long v1:33; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0c { unsigned long long v1:33; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0i { unsigned long long v1:33; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0ll { unsigned long long v1:33; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0s { unsigned long long v1:33; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0c { unsigned char v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0c { unsigned char v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0i { unsigned char v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0ll { unsigned char v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0s { unsigned char v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15i { unsigned char v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15s { unsigned char v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16i { unsigned char v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16s { unsigned char v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu17i { unsigned char v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu17ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1c { unsigned char v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1i { unsigned char v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1s { unsigned char v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu31i { unsigned char v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu31ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu32i { unsigned char v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu32ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu33 { unsigned char v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7c { unsigned char v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7i { unsigned char v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7s { unsigned char v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8c { unsigned char v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8i { unsigned char v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8s { unsigned char v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9i { unsigned char v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9s { unsigned char v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_C { unsigned char v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_D { unsigned char v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_F { unsigned char v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_I { unsigned char v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ip { unsigned char v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_L { unsigned char v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_S { unsigned char v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Uc { unsigned char v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ui { unsigned char v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ul { unsigned char v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Us { unsigned char v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Vp { unsigned char v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0i { unsigned char v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0c { unsigned char v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0i { unsigned char v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0ll { unsigned char v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0s { unsigned char v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15i { unsigned char v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15s { unsigned char v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16i { unsigned char v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16s { unsigned char v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu17i { unsigned char v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu17ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1c { unsigned char v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1i { unsigned char v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1s { unsigned char v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu31i { unsigned char v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu31ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu32i { unsigned char v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu32ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu33 { unsigned char v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7c { unsigned char v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7i { unsigned char v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7s { unsigned char v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8c { unsigned char v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8i { unsigned char v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8s { unsigned char v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9i { unsigned char v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9s { unsigned char v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_C { unsigned char v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_D { unsigned char v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_F { unsigned char v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_I { unsigned char v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ip { unsigned char v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_L { unsigned char v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_S { unsigned char v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Uc { unsigned char v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ui { unsigned char v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ul { unsigned char v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Us { unsigned char v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Vp { unsigned char v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll { unsigned char v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0c { unsigned char v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0i { unsigned char v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0ll { unsigned char v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0s { unsigned char v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15i { unsigned char v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15s { unsigned char v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16i { unsigned char v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16s { unsigned char v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu17i { unsigned char v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu17ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1c { unsigned char v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1i { unsigned char v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1s { unsigned char v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu31i { unsigned char v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu31ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu32i { unsigned char v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu32ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu33 { unsigned char v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7c { unsigned char v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7i { unsigned char v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7s { unsigned char v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8c { unsigned char v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8i { unsigned char v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8s { unsigned char v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9i { unsigned char v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9s { unsigned char v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_C { unsigned char v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_D { unsigned char v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_F { unsigned char v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_I { unsigned char v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ip { unsigned char v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_L { unsigned char v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_S { unsigned char v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Uc { unsigned char v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ui { unsigned char v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ul { unsigned char v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Us { unsigned char v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Vp { unsigned char v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0s { unsigned char v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0c { unsigned char v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0i { unsigned char v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0ll { unsigned char v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0s { unsigned char v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15i { unsigned char v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15s { unsigned char v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16i { unsigned char v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16s { unsigned char v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu17i { unsigned char v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu17ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1c { unsigned char v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1i { unsigned char v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1s { unsigned char v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu31i { unsigned char v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu31ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu32i { unsigned char v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu32ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu33 { unsigned char v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7c { unsigned char v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7i { unsigned char v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7s { unsigned char v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8c { unsigned char v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8i { unsigned char v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8s { unsigned char v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9i { unsigned char v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9s { unsigned char v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_C { unsigned char v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_D { unsigned char v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_F { unsigned char v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_I { unsigned char v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ip { unsigned char v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_L { unsigned char v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_S { unsigned char v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Uc { unsigned char v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ui { unsigned char v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ul { unsigned char v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Us { unsigned char v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Vp { unsigned char v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0c { unsigned char v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0i { unsigned char v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0ll { unsigned char v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0s { unsigned char v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0c { unsigned char v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0i { unsigned char v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0ll { unsigned char v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0s { unsigned char v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0c { unsigned char v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0i { unsigned char v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0ll { unsigned char v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0s { unsigned char v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0c { unsigned char v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0i { unsigned char v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0ll { unsigned char v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0s { unsigned char v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0c { unsigned char v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0i { unsigned char v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0ll { unsigned char v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0s { unsigned char v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0c { unsigned char v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0i { unsigned char v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0ll { unsigned char v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0s { unsigned char v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0c { unsigned char v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0i { unsigned char v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0ll { unsigned char v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0s { unsigned char v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0c { unsigned char v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0i { unsigned char v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0ll { unsigned char v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0s { unsigned char v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0c { unsigned char v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0i { unsigned char v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0ll { unsigned char v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0s { unsigned char v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0c { unsigned char v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0i { unsigned char v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0ll { unsigned char v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0s { unsigned char v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0c { unsigned char v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0i { unsigned char v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0ll { unsigned char v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0s { unsigned char v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0c { unsigned char v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0i { unsigned char v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0ll { unsigned char v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0s { unsigned char v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0c { unsigned char v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0i { unsigned char v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0ll { unsigned char v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0s { unsigned char v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0c { unsigned char v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0i { unsigned char v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0ll { unsigned char v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0s { unsigned char v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0c { unsigned char v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0i { unsigned char v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0ll { unsigned char v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0s { unsigned char v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0c { unsigned char v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0i { unsigned char v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0ll { unsigned char v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0s { unsigned char v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0c { unsigned char v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0i { unsigned char v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0ll { unsigned char v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0s { unsigned char v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0c { unsigned char v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0i { unsigned char v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0ll { unsigned char v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0s { unsigned char v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0c { unsigned char v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0i { unsigned char v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0ll { unsigned char v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0s { unsigned char v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0c { unsigned char v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0i { unsigned char v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0ll { unsigned char v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0s { unsigned char v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0c { unsigned char v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0i { unsigned char v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0ll { unsigned char v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0s { unsigned char v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0c { unsigned char v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0i { unsigned char v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0ll { unsigned char v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0s { unsigned char v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0c { unsigned char v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0i { unsigned char v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0ll { unsigned char v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0s { unsigned char v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0c { unsigned char v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0i { unsigned char v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0ll { unsigned char v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0s { unsigned char v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0c { unsigned char v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0i { unsigned char v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0ll { unsigned char v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0s { unsigned char v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0c { unsigned char v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0i { unsigned char v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0ll { unsigned char v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0s { unsigned char v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0c { unsigned char v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0i { unsigned char v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0ll { unsigned char v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0s { unsigned char v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0c { unsigned char v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0i { unsigned char v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0ll { unsigned char v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0s { unsigned char v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0c { unsigned char v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0i { unsigned char v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0ll { unsigned char v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0s { unsigned char v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0c { unsigned char v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0i { unsigned char v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0ll { unsigned char v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0s { unsigned char v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0c { unsigned char v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0i { unsigned char v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0ll { unsigned char v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0s { unsigned char v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0c { unsigned char v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0i { unsigned char v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0ll { unsigned char v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0s { unsigned char v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0c { unsigned char v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0i { unsigned char v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0ll { unsigned char v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0s { unsigned char v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0c { unsigned char v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0i { unsigned char v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0ll { unsigned char v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0s { unsigned char v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0c { unsigned char v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0i { unsigned char v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0ll { unsigned char v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0s { unsigned char v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0c { unsigned char v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0i { unsigned char v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0ll { unsigned char v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0s { unsigned char v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0c { unsigned char v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0i { unsigned char v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0ll { unsigned char v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0s { unsigned char v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0c { unsigned char v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0i { unsigned char v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0ll { unsigned char v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0s { unsigned char v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0c { unsigned char v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0i { unsigned char v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0ll { unsigned char v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0s { unsigned char v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0c { unsigned char v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0i { unsigned char v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0ll { unsigned char v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0s { unsigned char v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0c { unsigned int v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0c { unsigned int v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0i { unsigned int v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0ll { unsigned int v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0s { unsigned int v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15i { unsigned int v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15s { unsigned int v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16i { unsigned int v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16s { unsigned int v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu17i { unsigned int v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu17ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1c { unsigned int v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1i { unsigned int v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1s { unsigned int v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu31i { unsigned int v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu31ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu32i { unsigned int v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu32ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu33 { unsigned int v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7c { unsigned int v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7i { unsigned int v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7s { unsigned int v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8c { unsigned int v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8i { unsigned int v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8s { unsigned int v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9i { unsigned int v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9s { unsigned int v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_C { unsigned int v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_D { unsigned int v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_F { unsigned int v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_I { unsigned int v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ip { unsigned int v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_L { unsigned int v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_S { unsigned int v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Uc { unsigned int v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ui { unsigned int v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ul { unsigned int v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Us { unsigned int v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Vp { unsigned int v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0i { unsigned int v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0c { unsigned int v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0i { unsigned int v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0ll { unsigned int v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0s { unsigned int v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15i { unsigned int v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15s { unsigned int v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16i { unsigned int v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16s { unsigned int v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu17i { unsigned int v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu17ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1c { unsigned int v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1i { unsigned int v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1s { unsigned int v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu31i { unsigned int v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu31ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu32i { unsigned int v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu32ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu33 { unsigned int v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7c { unsigned int v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7i { unsigned int v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7s { unsigned int v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8c { unsigned int v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8i { unsigned int v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8s { unsigned int v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9i { unsigned int v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9s { unsigned int v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_C { unsigned int v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_D { unsigned int v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_F { unsigned int v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_I { unsigned int v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ip { unsigned int v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_L { unsigned int v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_S { unsigned int v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Uc { unsigned int v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ui { unsigned int v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ul { unsigned int v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Us { unsigned int v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Vp { unsigned int v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll { unsigned int v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0c { unsigned int v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0i { unsigned int v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0ll { unsigned int v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0s { unsigned int v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15i { unsigned int v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15s { unsigned int v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16i { unsigned int v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16s { unsigned int v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu17i { unsigned int v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu17ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1c { unsigned int v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1i { unsigned int v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1s { unsigned int v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu31i { unsigned int v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu31ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu32i { unsigned int v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu32ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu33 { unsigned int v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7c { unsigned int v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7i { unsigned int v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7s { unsigned int v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8c { unsigned int v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8i { unsigned int v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8s { unsigned int v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9i { unsigned int v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9s { unsigned int v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_C { unsigned int v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_D { unsigned int v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_F { unsigned int v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_I { unsigned int v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ip { unsigned int v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_L { unsigned int v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_S { unsigned int v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Uc { unsigned int v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ui { unsigned int v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ul { unsigned int v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Us { unsigned int v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Vp { unsigned int v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0s { unsigned int v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0c { unsigned int v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0i { unsigned int v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0ll { unsigned int v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0s { unsigned int v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15i { unsigned int v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15s { unsigned int v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16i { unsigned int v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16s { unsigned int v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu17i { unsigned int v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu17ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1c { unsigned int v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1i { unsigned int v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1s { unsigned int v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu31i { unsigned int v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu31ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu32i { unsigned int v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu32ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu33 { unsigned int v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7c { unsigned int v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7i { unsigned int v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7s { unsigned int v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8c { unsigned int v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8i { unsigned int v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8s { unsigned int v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9i { unsigned int v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9s { unsigned int v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_C { unsigned int v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_D { unsigned int v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_F { unsigned int v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_I { unsigned int v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ip { unsigned int v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_L { unsigned int v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_S { unsigned int v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Uc { unsigned int v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ui { unsigned int v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ul { unsigned int v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Us { unsigned int v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Vp { unsigned int v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0c { unsigned int v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0i { unsigned int v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0ll { unsigned int v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0s { unsigned int v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0c { unsigned int v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0i { unsigned int v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0ll { unsigned int v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0s { unsigned int v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0c { unsigned int v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0i { unsigned int v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0ll { unsigned int v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0s { unsigned int v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0c { unsigned int v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0i { unsigned int v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0ll { unsigned int v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0s { unsigned int v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0c { unsigned int v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0i { unsigned int v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0ll { unsigned int v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0s { unsigned int v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0c { unsigned int v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0i { unsigned int v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0ll { unsigned int v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0s { unsigned int v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0c { unsigned int v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0i { unsigned int v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0ll { unsigned int v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0s { unsigned int v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0c { unsigned int v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0i { unsigned int v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0ll { unsigned int v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0s { unsigned int v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0c { unsigned int v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0i { unsigned int v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0ll { unsigned int v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0s { unsigned int v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0c { unsigned int v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0i { unsigned int v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0ll { unsigned int v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0s { unsigned int v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0c { unsigned int v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0i { unsigned int v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0ll { unsigned int v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0s { unsigned int v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0c { unsigned int v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0i { unsigned int v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0ll { unsigned int v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0s { unsigned int v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0c { unsigned int v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0i { unsigned int v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0ll { unsigned int v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0s { unsigned int v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0c { unsigned int v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0i { unsigned int v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0ll { unsigned int v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0s { unsigned int v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0c { unsigned int v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0i { unsigned int v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0ll { unsigned int v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0s { unsigned int v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0c { unsigned int v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0i { unsigned int v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0ll { unsigned int v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0s { unsigned int v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0c { unsigned int v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0i { unsigned int v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0ll { unsigned int v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0s { unsigned int v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0c { unsigned int v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0i { unsigned int v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0ll { unsigned int v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0s { unsigned int v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0c { unsigned int v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0i { unsigned int v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0ll { unsigned int v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0s { unsigned int v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0c { unsigned int v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0i { unsigned int v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0ll { unsigned int v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0s { unsigned int v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0c { unsigned int v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0i { unsigned int v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0ll { unsigned int v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0s { unsigned int v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0c { unsigned int v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0i { unsigned int v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0ll { unsigned int v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0s { unsigned int v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0c { unsigned int v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0i { unsigned int v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0ll { unsigned int v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0s { unsigned int v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0c { unsigned int v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0i { unsigned int v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0ll { unsigned int v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0s { unsigned int v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0c { unsigned int v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0i { unsigned int v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0ll { unsigned int v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0s { unsigned int v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0c { unsigned int v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0i { unsigned int v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0ll { unsigned int v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0s { unsigned int v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0c { unsigned int v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0i { unsigned int v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0ll { unsigned int v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0s { unsigned int v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0c { unsigned int v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0i { unsigned int v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0ll { unsigned int v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0s { unsigned int v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0c { unsigned int v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0i { unsigned int v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0ll { unsigned int v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0s { unsigned int v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0c { unsigned int v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0i { unsigned int v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0ll { unsigned int v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0s { unsigned int v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0c { unsigned int v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0i { unsigned int v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0ll { unsigned int v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0s { unsigned int v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0c { unsigned int v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0i { unsigned int v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0ll { unsigned int v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0s { unsigned int v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0c { unsigned int v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0i { unsigned int v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0ll { unsigned int v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0s { unsigned int v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0c { unsigned int v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0i { unsigned int v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0ll { unsigned int v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0s { unsigned int v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0c { unsigned int v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0i { unsigned int v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0ll { unsigned int v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0s { unsigned int v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0c { unsigned int v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0i { unsigned int v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0ll { unsigned int v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0s { unsigned int v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0c { unsigned int v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0i { unsigned int v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0ll { unsigned int v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0s { unsigned int v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0c { unsigned int v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0i { unsigned int v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0ll { unsigned int v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0s { unsigned int v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0c { unsigned int v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0i { unsigned int v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0ll { unsigned int v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0s { unsigned int v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0c { unsigned int v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0i { unsigned int v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0ll { unsigned int v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0s { unsigned int v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c { unsigned long long v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0c { unsigned long long v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0i { unsigned long long v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0ll { unsigned long long v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0s { unsigned long long v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15i { unsigned long long v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15s { unsigned long long v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16i { unsigned long long v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16s { unsigned long long v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu17i { unsigned long long v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu17ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1c { unsigned long long v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1i { unsigned long long v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1s { unsigned long long v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu31i { unsigned long long v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu31ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu32i { unsigned long long v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu32ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu33 { unsigned long long v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7c { unsigned long long v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7i { unsigned long long v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7s { unsigned long long v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8c { unsigned long long v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8i { unsigned long long v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8s { unsigned long long v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9i { unsigned long long v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9s { unsigned long long v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_C { unsigned long long v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_D { unsigned long long v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_F { unsigned long long v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_I { unsigned long long v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ip { unsigned long long v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_L { unsigned long long v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_S { unsigned long long v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Uc { unsigned long long v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ui { unsigned long long v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ul { unsigned long long v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Us { unsigned long long v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Vp { unsigned long long v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i { unsigned long long v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0c { unsigned long long v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0i { unsigned long long v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0ll { unsigned long long v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0s { unsigned long long v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15i { unsigned long long v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15s { unsigned long long v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16i { unsigned long long v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16s { unsigned long long v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu17i { unsigned long long v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu17ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1c { unsigned long long v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1i { unsigned long long v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1s { unsigned long long v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu31i { unsigned long long v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu31ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu32i { unsigned long long v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu32ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu33 { unsigned long long v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7c { unsigned long long v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7i { unsigned long long v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7s { unsigned long long v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8c { unsigned long long v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8i { unsigned long long v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8s { unsigned long long v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9i { unsigned long long v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9s { unsigned long long v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_C { unsigned long long v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_D { unsigned long long v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_F { unsigned long long v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_I { unsigned long long v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ip { unsigned long long v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_L { unsigned long long v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_S { unsigned long long v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Uc { unsigned long long v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ui { unsigned long long v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ul { unsigned long long v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Us { unsigned long long v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Vp { unsigned long long v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll { unsigned long long v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0c { unsigned long long v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0i { unsigned long long v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0ll { unsigned long long v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0s { unsigned long long v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu17i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu17ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu31i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu31ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu32i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu32ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu33 { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_C { unsigned long long v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_D { unsigned long long v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_F { unsigned long long v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_I { unsigned long long v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ip { unsigned long long v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_L { unsigned long long v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_S { unsigned long long v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Uc { unsigned long long v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ui { unsigned long long v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ul { unsigned long long v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Us { unsigned long long v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Vp { unsigned long long v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s { unsigned long long v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0c { unsigned long long v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0i { unsigned long long v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0ll { unsigned long long v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0s { unsigned long long v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15i { unsigned long long v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15s { unsigned long long v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16i { unsigned long long v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16s { unsigned long long v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu17i { unsigned long long v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu17ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1c { unsigned long long v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1i { unsigned long long v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1s { unsigned long long v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu31i { unsigned long long v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu31ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu32i { unsigned long long v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu32ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu33 { unsigned long long v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7c { unsigned long long v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7i { unsigned long long v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7s { unsigned long long v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8c { unsigned long long v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8i { unsigned long long v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8s { unsigned long long v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9i { unsigned long long v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9s { unsigned long long v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_C { unsigned long long v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_D { unsigned long long v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_F { unsigned long long v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_I { unsigned long long v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ip { unsigned long long v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_L { unsigned long long v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_S { unsigned long long v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Uc { unsigned long long v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ui { unsigned long long v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ul { unsigned long long v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Us { unsigned long long v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Vp { unsigned long long v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0c { unsigned long long v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0i { unsigned long long v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0ll { unsigned long long v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0s { unsigned long long v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0c { unsigned long long v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0i { unsigned long long v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0s { unsigned long long v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0c { unsigned long long v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0i { unsigned long long v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0ll { unsigned long long v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0s { unsigned long long v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0c { unsigned long long v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0i { unsigned long long v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0ll { unsigned long long v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0s { unsigned long long v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0c { unsigned long long v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0i { unsigned long long v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0s { unsigned long long v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0c { unsigned long long v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0i { unsigned long long v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0ll { unsigned long long v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0s { unsigned long long v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0c { unsigned long long v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0i { unsigned long long v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0ll { unsigned long long v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0s { unsigned long long v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0c { unsigned long long v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0i { unsigned long long v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0s { unsigned long long v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0c { unsigned long long v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0i { unsigned long long v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0ll { unsigned long long v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0s { unsigned long long v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0c { unsigned long long v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0i { unsigned long long v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0ll { unsigned long long v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0s { unsigned long long v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0c { unsigned long long v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0i { unsigned long long v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0s { unsigned long long v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0c { unsigned long long v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0i { unsigned long long v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0ll { unsigned long long v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0s { unsigned long long v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0c { unsigned long long v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0i { unsigned long long v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0ll { unsigned long long v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0s { unsigned long long v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0c { unsigned long long v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0i { unsigned long long v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0s { unsigned long long v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0c { unsigned long long v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0i { unsigned long long v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0ll { unsigned long long v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0s { unsigned long long v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0c { unsigned long long v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0i { unsigned long long v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0s { unsigned long long v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0c { unsigned long long v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0i { unsigned long long v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0ll { unsigned long long v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0s { unsigned long long v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0c { unsigned long long v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0i { unsigned long long v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0ll { unsigned long long v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0s { unsigned long long v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0c { unsigned long long v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0i { unsigned long long v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0ll { unsigned long long v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0s { unsigned long long v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0c { unsigned long long v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0i { unsigned long long v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0s { unsigned long long v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0c { unsigned long long v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0i { unsigned long long v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0ll { unsigned long long v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0s { unsigned long long v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0c { unsigned long long v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0i { unsigned long long v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0ll { unsigned long long v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0s { unsigned long long v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0c { unsigned long long v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0i { unsigned long long v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0ll { unsigned long long v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0s { unsigned long long v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0c { unsigned long long v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0i { unsigned long long v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0s { unsigned long long v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0c { unsigned long long v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0i { unsigned long long v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0ll { unsigned long long v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0s { unsigned long long v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0c { unsigned long long v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0i { unsigned long long v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0ll { unsigned long long v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0s { unsigned long long v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0c { unsigned long long v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0i { unsigned long long v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0s { unsigned long long v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0c { unsigned long long v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0i { unsigned long long v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0ll { unsigned long long v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0s { unsigned long long v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0c { unsigned long long v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0i { unsigned long long v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0ll { unsigned long long v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0s { unsigned long long v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0c { unsigned long long v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0i { unsigned long long v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0ll { unsigned long long v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0s { unsigned long long v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0c { unsigned long long v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0i { unsigned long long v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0ll { unsigned long long v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0s { unsigned long long v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0c { unsigned long long v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0i { unsigned long long v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0ll { unsigned long long v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0s { unsigned long long v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0c { unsigned long long v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0i { unsigned long long v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0ll { unsigned long long v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0s { unsigned long long v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0c { unsigned long long v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0i { unsigned long long v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0ll { unsigned long long v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0s { unsigned long long v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0c { unsigned long long v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0i { unsigned long long v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0ll { unsigned long long v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0s { unsigned long long v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0c { unsigned long long v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0i { unsigned long long v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0ll { unsigned long long v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0s { unsigned long long v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0c { unsigned long long v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0i { unsigned long long v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0ll { unsigned long long v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0s { unsigned long long v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0c { unsigned long long v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0i { unsigned long long v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0ll { unsigned long long v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0s { unsigned long long v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0c { unsigned long long v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0i { unsigned long long v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0ll { unsigned long long v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0s { unsigned long long v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0c { unsigned long long v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0i { unsigned long long v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0ll { unsigned long long v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0s { unsigned long long v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0c { unsigned short v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0c { unsigned short v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0i { unsigned short v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0ll { unsigned short v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0s { unsigned short v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15i { unsigned short v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15s { unsigned short v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16i { unsigned short v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16s { unsigned short v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu17i { unsigned short v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu17ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1c { unsigned short v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1i { unsigned short v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1s { unsigned short v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu31i { unsigned short v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu31ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu32i { unsigned short v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu32ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu33 { unsigned short v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7c { unsigned short v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7i { unsigned short v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7s { unsigned short v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8c { unsigned short v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8i { unsigned short v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8s { unsigned short v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9i { unsigned short v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9s { unsigned short v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_C { unsigned short v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_D { unsigned short v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_F { unsigned short v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_I { unsigned short v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ip { unsigned short v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_L { unsigned short v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_S { unsigned short v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Uc { unsigned short v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ui { unsigned short v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ul { unsigned short v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Us { unsigned short v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Vp { unsigned short v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0i { unsigned short v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0c { unsigned short v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0i { unsigned short v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0ll { unsigned short v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0s { unsigned short v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15i { unsigned short v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15s { unsigned short v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16i { unsigned short v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16s { unsigned short v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu17i { unsigned short v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu17ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1c { unsigned short v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1i { unsigned short v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1s { unsigned short v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu31i { unsigned short v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu31ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu32i { unsigned short v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu32ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu33 { unsigned short v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7c { unsigned short v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7i { unsigned short v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7s { unsigned short v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8c { unsigned short v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8i { unsigned short v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8s { unsigned short v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9i { unsigned short v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9s { unsigned short v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_C { unsigned short v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_D { unsigned short v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_F { unsigned short v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_I { unsigned short v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ip { unsigned short v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_L { unsigned short v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_S { unsigned short v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Uc { unsigned short v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ui { unsigned short v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ul { unsigned short v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Us { unsigned short v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Vp { unsigned short v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll { unsigned short v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0c { unsigned short v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0i { unsigned short v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0ll { unsigned short v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0s { unsigned short v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15i { unsigned short v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15s { unsigned short v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16i { unsigned short v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16s { unsigned short v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu17i { unsigned short v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu17ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1c { unsigned short v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1i { unsigned short v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1s { unsigned short v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu31i { unsigned short v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu31ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu32i { unsigned short v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu32ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu33 { unsigned short v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7c { unsigned short v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7i { unsigned short v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7s { unsigned short v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8c { unsigned short v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8i { unsigned short v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8s { unsigned short v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9i { unsigned short v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9s { unsigned short v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_C { unsigned short v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_D { unsigned short v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_F { unsigned short v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_I { unsigned short v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ip { unsigned short v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_L { unsigned short v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_S { unsigned short v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Uc { unsigned short v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ui { unsigned short v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ul { unsigned short v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Us { unsigned short v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Vp { unsigned short v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0s { unsigned short v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0c { unsigned short v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0i { unsigned short v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0ll { unsigned short v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0s { unsigned short v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15i { unsigned short v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15s { unsigned short v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16i { unsigned short v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16s { unsigned short v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu17i { unsigned short v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu17ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1c { unsigned short v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1i { unsigned short v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1s { unsigned short v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu31i { unsigned short v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu31ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu32i { unsigned short v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu32ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu33 { unsigned short v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7c { unsigned short v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7i { unsigned short v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7s { unsigned short v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8c { unsigned short v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8i { unsigned short v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8s { unsigned short v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9i { unsigned short v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9s { unsigned short v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_C { unsigned short v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_D { unsigned short v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_F { unsigned short v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_I { unsigned short v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ip { unsigned short v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_L { unsigned short v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_S { unsigned short v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Uc { unsigned short v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ui { unsigned short v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ul { unsigned short v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Us { unsigned short v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Vp { unsigned short v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0c { unsigned short v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0i { unsigned short v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0ll { unsigned short v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0s { unsigned short v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0c { unsigned short v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0i { unsigned short v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0ll { unsigned short v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0s { unsigned short v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0c { unsigned short v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0i { unsigned short v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0ll { unsigned short v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0s { unsigned short v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0c { unsigned short v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0i { unsigned short v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0ll { unsigned short v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0s { unsigned short v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0c { unsigned short v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0i { unsigned short v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0ll { unsigned short v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0s { unsigned short v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0c { unsigned short v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0i { unsigned short v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0ll { unsigned short v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0s { unsigned short v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0c { unsigned short v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0i { unsigned short v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0ll { unsigned short v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0s { unsigned short v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0c { unsigned short v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0i { unsigned short v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0ll { unsigned short v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0s { unsigned short v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0c { unsigned short v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0i { unsigned short v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0ll { unsigned short v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0s { unsigned short v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0c { unsigned short v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0i { unsigned short v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0ll { unsigned short v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0s { unsigned short v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0c { unsigned short v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0i { unsigned short v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0ll { unsigned short v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0s { unsigned short v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0c { unsigned short v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0i { unsigned short v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0ll { unsigned short v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0s { unsigned short v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0c { unsigned short v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0i { unsigned short v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0ll { unsigned short v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0s { unsigned short v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0c { unsigned short v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0i { unsigned short v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0ll { unsigned short v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0s { unsigned short v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0c { unsigned short v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0i { unsigned short v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0ll { unsigned short v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0s { unsigned short v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0c { unsigned short v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0i { unsigned short v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0ll { unsigned short v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0s { unsigned short v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0c { unsigned short v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0i { unsigned short v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0ll { unsigned short v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0s { unsigned short v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0c { unsigned short v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0i { unsigned short v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0ll { unsigned short v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0s { unsigned short v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0c { unsigned short v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0i { unsigned short v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0ll { unsigned short v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0s { unsigned short v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0c { unsigned short v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0i { unsigned short v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0ll { unsigned short v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0s { unsigned short v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0c { unsigned short v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0i { unsigned short v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0ll { unsigned short v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0s { unsigned short v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0c { unsigned short v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0i { unsigned short v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0ll { unsigned short v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0s { unsigned short v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0c { unsigned short v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0i { unsigned short v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0ll { unsigned short v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0s { unsigned short v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0c { unsigned short v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0i { unsigned short v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0ll { unsigned short v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0s { unsigned short v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0c { unsigned short v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0i { unsigned short v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0ll { unsigned short v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0s { unsigned short v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0c { unsigned short v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0i { unsigned short v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0ll { unsigned short v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0s { unsigned short v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0c { unsigned short v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0i { unsigned short v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0ll { unsigned short v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0s { unsigned short v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0c { unsigned short v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0i { unsigned short v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0ll { unsigned short v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0s { unsigned short v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0c { unsigned short v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0i { unsigned short v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0ll { unsigned short v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0s { unsigned short v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0c { unsigned short v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0i { unsigned short v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0ll { unsigned short v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0s { unsigned short v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0c { unsigned short v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0i { unsigned short v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0ll { unsigned short v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0s { unsigned short v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0c { unsigned short v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0i { unsigned short v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0ll { unsigned short v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0s { unsigned short v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0c { unsigned short v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0i { unsigned short v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0ll { unsigned short v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0s { unsigned short v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0c { unsigned short v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0i { unsigned short v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0ll { unsigned short v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0s { unsigned short v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0c { unsigned short v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0i { unsigned short v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0ll { unsigned short v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0s { unsigned short v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0c { unsigned short v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0i { unsigned short v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0ll { unsigned short v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0s { unsigned short v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0c { unsigned short v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0i { unsigned short v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0ll { unsigned short v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0s { unsigned short v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0c { unsigned short v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0i { unsigned short v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0ll { unsigned short v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0s { unsigned short v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0c { unsigned short v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0i { unsigned short v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0ll { unsigned short v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0s { unsigned short v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0c { unsigned short v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0i { unsigned short v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0ll { unsigned short v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0s { unsigned short v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0c { unsigned char v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0c { unsigned char v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0i { unsigned char v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0ll { unsigned char v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0s { unsigned char v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15i { unsigned char v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15s { unsigned char v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16i { unsigned char v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16s { unsigned char v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu17i { unsigned char v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu17ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1c { unsigned char v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1i { unsigned char v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1s { unsigned char v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu31i { unsigned char v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu31ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu32i { unsigned char v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu32ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu33 { unsigned char v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7c { unsigned char v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7i { unsigned char v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7s { unsigned char v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8c { unsigned char v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8i { unsigned char v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8s { unsigned char v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9i { unsigned char v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9s { unsigned char v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_C { unsigned char v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_D { unsigned char v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_F { unsigned char v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_I { unsigned char v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ip { unsigned char v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_L { unsigned char v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_S { unsigned char v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Uc { unsigned char v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ui { unsigned char v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ul { unsigned char v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Us { unsigned char v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Vp { unsigned char v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0i { unsigned char v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0c { unsigned char v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0i { unsigned char v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0ll { unsigned char v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0s { unsigned char v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15i { unsigned char v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15s { unsigned char v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16i { unsigned char v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16s { unsigned char v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu17i { unsigned char v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu17ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1c { unsigned char v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1i { unsigned char v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1s { unsigned char v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu31i { unsigned char v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu31ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu32i { unsigned char v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu32ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu33 { unsigned char v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7c { unsigned char v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7i { unsigned char v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7s { unsigned char v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8c { unsigned char v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8i { unsigned char v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8s { unsigned char v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9i { unsigned char v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9s { unsigned char v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_C { unsigned char v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_D { unsigned char v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_F { unsigned char v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_I { unsigned char v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ip { unsigned char v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_L { unsigned char v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_S { unsigned char v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Uc { unsigned char v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ui { unsigned char v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ul { unsigned char v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Us { unsigned char v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Vp { unsigned char v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll { unsigned char v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0c { unsigned char v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0i { unsigned char v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0ll { unsigned char v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0s { unsigned char v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15i { unsigned char v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15s { unsigned char v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16i { unsigned char v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16s { unsigned char v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu17i { unsigned char v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu17ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1c { unsigned char v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1i { unsigned char v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1s { unsigned char v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu31i { unsigned char v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu31ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu32i { unsigned char v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu32ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu33 { unsigned char v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7c { unsigned char v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7i { unsigned char v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7s { unsigned char v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8c { unsigned char v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8i { unsigned char v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8s { unsigned char v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9i { unsigned char v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9s { unsigned char v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_C { unsigned char v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_D { unsigned char v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_F { unsigned char v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_I { unsigned char v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ip { unsigned char v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_L { unsigned char v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_S { unsigned char v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Uc { unsigned char v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ui { unsigned char v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ul { unsigned char v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Us { unsigned char v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Vp { unsigned char v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0s { unsigned char v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0c { unsigned char v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0i { unsigned char v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0ll { unsigned char v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0s { unsigned char v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15i { unsigned char v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15s { unsigned char v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16i { unsigned char v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16s { unsigned char v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu17i { unsigned char v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu17ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1c { unsigned char v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1i { unsigned char v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1s { unsigned char v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu31i { unsigned char v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu31ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu32i { unsigned char v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu32ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu33 { unsigned char v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7c { unsigned char v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7i { unsigned char v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7s { unsigned char v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8c { unsigned char v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8i { unsigned char v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8s { unsigned char v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9i { unsigned char v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9s { unsigned char v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_C { unsigned char v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_D { unsigned char v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_F { unsigned char v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_I { unsigned char v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ip { unsigned char v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_L { unsigned char v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_S { unsigned char v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Uc { unsigned char v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ui { unsigned char v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ul { unsigned char v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Us { unsigned char v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Vp { unsigned char v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0c { unsigned char v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0i { unsigned char v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0ll { unsigned char v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0s { unsigned char v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0c { unsigned char v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0i { unsigned char v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0ll { unsigned char v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0s { unsigned char v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0c { unsigned char v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0i { unsigned char v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0ll { unsigned char v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0s { unsigned char v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0c { unsigned char v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0i { unsigned char v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0ll { unsigned char v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0s { unsigned char v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0c { unsigned char v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0i { unsigned char v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0ll { unsigned char v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0s { unsigned char v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0c { unsigned char v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0i { unsigned char v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0ll { unsigned char v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0s { unsigned char v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0c { unsigned char v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0i { unsigned char v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0ll { unsigned char v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0s { unsigned char v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0c { unsigned char v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0i { unsigned char v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0ll { unsigned char v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0s { unsigned char v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0c { unsigned char v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0i { unsigned char v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0ll { unsigned char v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0s { unsigned char v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0c { unsigned char v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0i { unsigned char v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0ll { unsigned char v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0s { unsigned char v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0c { unsigned char v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0i { unsigned char v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0ll { unsigned char v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0s { unsigned char v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0c { unsigned char v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0i { unsigned char v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0ll { unsigned char v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0s { unsigned char v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0c { unsigned char v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0i { unsigned char v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0ll { unsigned char v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0s { unsigned char v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0c { unsigned char v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0i { unsigned char v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0ll { unsigned char v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0s { unsigned char v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0c { unsigned char v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0i { unsigned char v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0ll { unsigned char v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0s { unsigned char v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0c { unsigned char v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0i { unsigned char v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0ll { unsigned char v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0s { unsigned char v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0c { unsigned char v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0i { unsigned char v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0ll { unsigned char v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0s { unsigned char v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0c { unsigned char v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0i { unsigned char v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0ll { unsigned char v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0s { unsigned char v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0c { unsigned char v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0i { unsigned char v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0ll { unsigned char v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0s { unsigned char v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0c { unsigned char v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0i { unsigned char v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0ll { unsigned char v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0s { unsigned char v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0c { unsigned char v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0i { unsigned char v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0ll { unsigned char v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0s { unsigned char v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0c { unsigned char v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0i { unsigned char v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0ll { unsigned char v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0s { unsigned char v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0c { unsigned char v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0i { unsigned char v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0ll { unsigned char v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0s { unsigned char v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0c { unsigned char v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0i { unsigned char v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0ll { unsigned char v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0s { unsigned char v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0c { unsigned char v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0i { unsigned char v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0ll { unsigned char v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0s { unsigned char v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0c { unsigned char v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0i { unsigned char v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0ll { unsigned char v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0s { unsigned char v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0c { unsigned char v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0i { unsigned char v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0ll { unsigned char v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0s { unsigned char v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0c { unsigned char v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0i { unsigned char v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0ll { unsigned char v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0s { unsigned char v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0c { unsigned char v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0i { unsigned char v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0ll { unsigned char v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0s { unsigned char v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0c { unsigned char v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0i { unsigned char v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0ll { unsigned char v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0s { unsigned char v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0c { unsigned char v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0i { unsigned char v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0ll { unsigned char v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0s { unsigned char v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0c { unsigned char v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0i { unsigned char v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0ll { unsigned char v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0s { unsigned char v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0c { unsigned char v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0i { unsigned char v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0ll { unsigned char v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0s { unsigned char v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0c { unsigned char v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0i { unsigned char v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0ll { unsigned char v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0s { unsigned char v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0c { unsigned char v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0i { unsigned char v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0ll { unsigned char v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0s { unsigned char v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0c { unsigned char v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0i { unsigned char v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0ll { unsigned char v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0s { unsigned char v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0c { unsigned char v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0i { unsigned char v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0ll { unsigned char v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0s { unsigned char v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0c { unsigned char v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0i { unsigned char v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0ll { unsigned char v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0s { unsigned char v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0c { unsigned char v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0i { unsigned char v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0ll { unsigned char v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0s { unsigned char v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0c { unsigned char v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0i { unsigned char v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0ll { unsigned char v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0s { unsigned char v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0c { unsigned int v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0c { unsigned int v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0i { unsigned int v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0ll { unsigned int v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0s { unsigned int v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15i { unsigned int v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15s { unsigned int v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16i { unsigned int v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16s { unsigned int v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu17i { unsigned int v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu17ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1c { unsigned int v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1i { unsigned int v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1s { unsigned int v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu31i { unsigned int v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu31ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu32i { unsigned int v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu32ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu33 { unsigned int v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7c { unsigned int v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7i { unsigned int v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7s { unsigned int v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8c { unsigned int v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8i { unsigned int v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8s { unsigned int v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9i { unsigned int v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9s { unsigned int v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_C { unsigned int v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_D { unsigned int v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_F { unsigned int v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_I { unsigned int v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ip { unsigned int v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_L { unsigned int v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_S { unsigned int v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Uc { unsigned int v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ui { unsigned int v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ul { unsigned int v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Us { unsigned int v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Vp { unsigned int v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0i { unsigned int v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0c { unsigned int v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0i { unsigned int v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0ll { unsigned int v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0s { unsigned int v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15i { unsigned int v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15s { unsigned int v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16i { unsigned int v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16s { unsigned int v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu17i { unsigned int v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu17ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1c { unsigned int v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1i { unsigned int v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1s { unsigned int v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu31i { unsigned int v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu31ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu32i { unsigned int v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu32ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu33 { unsigned int v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7c { unsigned int v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7i { unsigned int v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7s { unsigned int v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8c { unsigned int v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8i { unsigned int v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8s { unsigned int v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9i { unsigned int v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9s { unsigned int v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_C { unsigned int v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_D { unsigned int v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_F { unsigned int v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_I { unsigned int v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ip { unsigned int v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_L { unsigned int v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_S { unsigned int v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Uc { unsigned int v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ui { unsigned int v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ul { unsigned int v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Us { unsigned int v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Vp { unsigned int v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll { unsigned int v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0c { unsigned int v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0i { unsigned int v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0ll { unsigned int v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0s { unsigned int v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15i { unsigned int v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15s { unsigned int v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16i { unsigned int v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16s { unsigned int v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu17i { unsigned int v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu17ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1c { unsigned int v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1i { unsigned int v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1s { unsigned int v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu31i { unsigned int v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu31ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu32i { unsigned int v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu32ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu33 { unsigned int v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7c { unsigned int v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7i { unsigned int v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7s { unsigned int v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8c { unsigned int v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8i { unsigned int v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8s { unsigned int v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9i { unsigned int v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9s { unsigned int v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_C { unsigned int v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_D { unsigned int v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_F { unsigned int v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_I { unsigned int v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ip { unsigned int v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_L { unsigned int v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_S { unsigned int v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Uc { unsigned int v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ui { unsigned int v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ul { unsigned int v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Us { unsigned int v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Vp { unsigned int v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0s { unsigned int v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0c { unsigned int v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0i { unsigned int v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0ll { unsigned int v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0s { unsigned int v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15i { unsigned int v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15s { unsigned int v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16i { unsigned int v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16s { unsigned int v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu17i { unsigned int v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu17ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1c { unsigned int v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1i { unsigned int v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1s { unsigned int v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu31i { unsigned int v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu31ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu32i { unsigned int v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu32ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu33 { unsigned int v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7c { unsigned int v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7i { unsigned int v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7s { unsigned int v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8c { unsigned int v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8i { unsigned int v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8s { unsigned int v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9i { unsigned int v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9s { unsigned int v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_C { unsigned int v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_D { unsigned int v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_F { unsigned int v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_I { unsigned int v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ip { unsigned int v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_L { unsigned int v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_S { unsigned int v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Uc { unsigned int v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ui { unsigned int v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ul { unsigned int v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Us { unsigned int v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Vp { unsigned int v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0c { unsigned int v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0i { unsigned int v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0ll { unsigned int v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0s { unsigned int v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0c { unsigned int v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0i { unsigned int v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0ll { unsigned int v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0s { unsigned int v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0c { unsigned int v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0i { unsigned int v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0ll { unsigned int v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0s { unsigned int v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0c { unsigned int v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0i { unsigned int v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0ll { unsigned int v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0s { unsigned int v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0c { unsigned int v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0i { unsigned int v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0ll { unsigned int v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0s { unsigned int v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0c { unsigned int v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0i { unsigned int v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0ll { unsigned int v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0s { unsigned int v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0c { unsigned int v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0i { unsigned int v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0ll { unsigned int v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0s { unsigned int v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0c { unsigned int v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0i { unsigned int v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0ll { unsigned int v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0s { unsigned int v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0c { unsigned int v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0i { unsigned int v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0ll { unsigned int v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0s { unsigned int v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0c { unsigned int v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0i { unsigned int v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0ll { unsigned int v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0s { unsigned int v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0c { unsigned int v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0i { unsigned int v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0ll { unsigned int v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0s { unsigned int v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0c { unsigned int v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0i { unsigned int v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0ll { unsigned int v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0s { unsigned int v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0c { unsigned int v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0i { unsigned int v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0ll { unsigned int v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0s { unsigned int v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0c { unsigned int v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0i { unsigned int v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0ll { unsigned int v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0s { unsigned int v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0c { unsigned int v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0i { unsigned int v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0ll { unsigned int v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0s { unsigned int v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0c { unsigned int v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0i { unsigned int v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0ll { unsigned int v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0s { unsigned int v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0c { unsigned int v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0i { unsigned int v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0ll { unsigned int v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0s { unsigned int v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0c { unsigned int v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0i { unsigned int v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0ll { unsigned int v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0s { unsigned int v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0c { unsigned int v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0i { unsigned int v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0ll { unsigned int v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0s { unsigned int v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0c { unsigned int v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0i { unsigned int v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0ll { unsigned int v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0s { unsigned int v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0c { unsigned int v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0i { unsigned int v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0ll { unsigned int v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0s { unsigned int v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0c { unsigned int v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0i { unsigned int v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0ll { unsigned int v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0s { unsigned int v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0c { unsigned int v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0i { unsigned int v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0ll { unsigned int v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0s { unsigned int v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0c { unsigned int v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0i { unsigned int v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0ll { unsigned int v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0s { unsigned int v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0c { unsigned int v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0i { unsigned int v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0ll { unsigned int v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0s { unsigned int v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0c { unsigned int v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0i { unsigned int v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0ll { unsigned int v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0s { unsigned int v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0c { unsigned int v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0i { unsigned int v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0ll { unsigned int v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0s { unsigned int v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0c { unsigned int v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0i { unsigned int v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0ll { unsigned int v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0s { unsigned int v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0c { unsigned int v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0i { unsigned int v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0ll { unsigned int v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0s { unsigned int v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0c { unsigned int v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0i { unsigned int v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0ll { unsigned int v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0s { unsigned int v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0c { unsigned int v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0i { unsigned int v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0ll { unsigned int v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0s { unsigned int v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0c { unsigned int v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0i { unsigned int v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0ll { unsigned int v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0s { unsigned int v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0c { unsigned int v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0i { unsigned int v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0ll { unsigned int v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0s { unsigned int v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0c { unsigned int v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0i { unsigned int v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0ll { unsigned int v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0s { unsigned int v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0c { unsigned int v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0i { unsigned int v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0ll { unsigned int v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0s { unsigned int v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0c { unsigned int v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0i { unsigned int v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0ll { unsigned int v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0s { unsigned int v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0c { unsigned int v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0i { unsigned int v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0ll { unsigned int v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0s { unsigned int v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0c { unsigned int v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0i { unsigned int v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0ll { unsigned int v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0s { unsigned int v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0c { unsigned int v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0i { unsigned int v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0ll { unsigned int v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0s { unsigned int v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0c { unsigned int v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0i { unsigned int v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0ll { unsigned int v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0s { unsigned int v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c { unsigned long long v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0c { unsigned long long v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0i { unsigned long long v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0ll { unsigned long long v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0s { unsigned long long v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15i { unsigned long long v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15s { unsigned long long v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16i { unsigned long long v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16s { unsigned long long v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu17i { unsigned long long v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu17ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1c { unsigned long long v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1i { unsigned long long v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1s { unsigned long long v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu31i { unsigned long long v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu31ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu32i { unsigned long long v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu32ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu33 { unsigned long long v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7c { unsigned long long v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7i { unsigned long long v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7s { unsigned long long v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8c { unsigned long long v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8i { unsigned long long v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8s { unsigned long long v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9i { unsigned long long v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9s { unsigned long long v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_C { unsigned long long v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_D { unsigned long long v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_F { unsigned long long v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_I { unsigned long long v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ip { unsigned long long v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_L { unsigned long long v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_S { unsigned long long v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Uc { unsigned long long v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ui { unsigned long long v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ul { unsigned long long v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Us { unsigned long long v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Vp { unsigned long long v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i { unsigned long long v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0c { unsigned long long v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0i { unsigned long long v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0ll { unsigned long long v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0s { unsigned long long v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15i { unsigned long long v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15s { unsigned long long v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16i { unsigned long long v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16s { unsigned long long v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu17i { unsigned long long v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu17ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1c { unsigned long long v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1i { unsigned long long v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1s { unsigned long long v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu31i { unsigned long long v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu31ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu32i { unsigned long long v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu32ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu33 { unsigned long long v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7c { unsigned long long v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7i { unsigned long long v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7s { unsigned long long v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8c { unsigned long long v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8i { unsigned long long v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8s { unsigned long long v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9i { unsigned long long v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9s { unsigned long long v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_C { unsigned long long v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_D { unsigned long long v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_F { unsigned long long v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_I { unsigned long long v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ip { unsigned long long v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_L { unsigned long long v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_S { unsigned long long v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Uc { unsigned long long v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ui { unsigned long long v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ul { unsigned long long v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Us { unsigned long long v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Vp { unsigned long long v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll { unsigned long long v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0c { unsigned long long v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0i { unsigned long long v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0ll { unsigned long long v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0s { unsigned long long v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu17i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu17ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu31i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu31ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu32i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu32ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu33 { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_C { unsigned long long v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_D { unsigned long long v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_F { unsigned long long v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_I { unsigned long long v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ip { unsigned long long v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_L { unsigned long long v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_S { unsigned long long v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Uc { unsigned long long v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ui { unsigned long long v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ul { unsigned long long v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Us { unsigned long long v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Vp { unsigned long long v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s { unsigned long long v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0c { unsigned long long v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0i { unsigned long long v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0ll { unsigned long long v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0s { unsigned long long v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15i { unsigned long long v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15s { unsigned long long v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16i { unsigned long long v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16s { unsigned long long v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu17i { unsigned long long v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu17ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1c { unsigned long long v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1i { unsigned long long v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1s { unsigned long long v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu31i { unsigned long long v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu31ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu32i { unsigned long long v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu32ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu33 { unsigned long long v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7c { unsigned long long v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7i { unsigned long long v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7s { unsigned long long v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8c { unsigned long long v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8i { unsigned long long v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8s { unsigned long long v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9i { unsigned long long v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9s { unsigned long long v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_C { unsigned long long v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_D { unsigned long long v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_F { unsigned long long v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_I { unsigned long long v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ip { unsigned long long v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_L { unsigned long long v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_S { unsigned long long v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Uc { unsigned long long v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ui { unsigned long long v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ul { unsigned long long v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Us { unsigned long long v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Vp { unsigned long long v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0c { unsigned long long v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0i { unsigned long long v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0ll { unsigned long long v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0s { unsigned long long v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0c { unsigned long long v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0i { unsigned long long v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0s { unsigned long long v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0c { unsigned long long v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0i { unsigned long long v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0ll { unsigned long long v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0s { unsigned long long v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0c { unsigned long long v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0i { unsigned long long v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0ll { unsigned long long v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0s { unsigned long long v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0c { unsigned long long v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0i { unsigned long long v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0s { unsigned long long v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0c { unsigned long long v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0i { unsigned long long v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0ll { unsigned long long v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0s { unsigned long long v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0c { unsigned long long v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0i { unsigned long long v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0ll { unsigned long long v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0s { unsigned long long v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0c { unsigned long long v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0i { unsigned long long v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0s { unsigned long long v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0c { unsigned long long v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0i { unsigned long long v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0ll { unsigned long long v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0s { unsigned long long v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0c { unsigned long long v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0i { unsigned long long v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0ll { unsigned long long v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0s { unsigned long long v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0c { unsigned long long v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0i { unsigned long long v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0s { unsigned long long v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0c { unsigned long long v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0i { unsigned long long v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0ll { unsigned long long v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0s { unsigned long long v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0c { unsigned long long v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0i { unsigned long long v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0ll { unsigned long long v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0s { unsigned long long v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0c { unsigned long long v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0i { unsigned long long v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0s { unsigned long long v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0c { unsigned long long v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0i { unsigned long long v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0ll { unsigned long long v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0s { unsigned long long v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0c { unsigned long long v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0i { unsigned long long v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0s { unsigned long long v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0c { unsigned long long v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0i { unsigned long long v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0ll { unsigned long long v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0s { unsigned long long v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0c { unsigned long long v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0i { unsigned long long v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0ll { unsigned long long v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0s { unsigned long long v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0c { unsigned long long v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0i { unsigned long long v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0ll { unsigned long long v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0s { unsigned long long v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0c { unsigned long long v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0i { unsigned long long v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0s { unsigned long long v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0c { unsigned long long v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0i { unsigned long long v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0ll { unsigned long long v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0s { unsigned long long v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0c { unsigned long long v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0i { unsigned long long v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0ll { unsigned long long v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0s { unsigned long long v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0c { unsigned long long v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0i { unsigned long long v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0ll { unsigned long long v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0s { unsigned long long v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0c { unsigned long long v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0i { unsigned long long v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0s { unsigned long long v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0c { unsigned long long v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0i { unsigned long long v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0ll { unsigned long long v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0s { unsigned long long v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0c { unsigned long long v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0i { unsigned long long v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0ll { unsigned long long v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0s { unsigned long long v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0c { unsigned long long v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0i { unsigned long long v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0s { unsigned long long v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0c { unsigned long long v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0i { unsigned long long v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0ll { unsigned long long v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0s { unsigned long long v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0c { unsigned long long v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0i { unsigned long long v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0ll { unsigned long long v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0s { unsigned long long v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0c { unsigned long long v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0i { unsigned long long v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0ll { unsigned long long v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0s { unsigned long long v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0c { unsigned long long v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0i { unsigned long long v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0ll { unsigned long long v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0s { unsigned long long v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0c { unsigned long long v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0i { unsigned long long v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0ll { unsigned long long v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0s { unsigned long long v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0c { unsigned long long v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0i { unsigned long long v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0ll { unsigned long long v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0s { unsigned long long v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0c { unsigned long long v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0i { unsigned long long v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0ll { unsigned long long v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0s { unsigned long long v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0c { unsigned long long v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0i { unsigned long long v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0ll { unsigned long long v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0s { unsigned long long v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0c { unsigned long long v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0i { unsigned long long v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0ll { unsigned long long v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0s { unsigned long long v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0c { unsigned long long v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0i { unsigned long long v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0ll { unsigned long long v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0s { unsigned long long v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0c { unsigned long long v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0i { unsigned long long v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0ll { unsigned long long v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0s { unsigned long long v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0c { unsigned long long v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0i { unsigned long long v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0ll { unsigned long long v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0s { unsigned long long v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0c { unsigned long long v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0i { unsigned long long v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0ll { unsigned long long v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0s { unsigned long long v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0c { unsigned short v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0c { unsigned short v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0i { unsigned short v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0ll { unsigned short v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0s { unsigned short v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15i { unsigned short v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15s { unsigned short v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16i { unsigned short v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16s { unsigned short v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu17i { unsigned short v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu17ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1c { unsigned short v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1i { unsigned short v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1s { unsigned short v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu31i { unsigned short v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu31ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu32i { unsigned short v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu32ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu33 { unsigned short v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7c { unsigned short v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7i { unsigned short v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7s { unsigned short v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8c { unsigned short v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8i { unsigned short v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8s { unsigned short v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9i { unsigned short v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9s { unsigned short v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_C { unsigned short v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_D { unsigned short v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_F { unsigned short v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_I { unsigned short v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ip { unsigned short v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_L { unsigned short v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_S { unsigned short v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Uc { unsigned short v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ui { unsigned short v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ul { unsigned short v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Us { unsigned short v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Vp { unsigned short v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0i { unsigned short v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0c { unsigned short v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0i { unsigned short v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0ll { unsigned short v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0s { unsigned short v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15i { unsigned short v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15s { unsigned short v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16i { unsigned short v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16s { unsigned short v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu17i { unsigned short v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu17ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1c { unsigned short v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1i { unsigned short v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1s { unsigned short v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu31i { unsigned short v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu31ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu32i { unsigned short v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu32ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu33 { unsigned short v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7c { unsigned short v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7i { unsigned short v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7s { unsigned short v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8c { unsigned short v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8i { unsigned short v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8s { unsigned short v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9i { unsigned short v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9s { unsigned short v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_C { unsigned short v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_D { unsigned short v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_F { unsigned short v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_I { unsigned short v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ip { unsigned short v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_L { unsigned short v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_S { unsigned short v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Uc { unsigned short v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ui { unsigned short v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ul { unsigned short v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Us { unsigned short v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Vp { unsigned short v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll { unsigned short v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0c { unsigned short v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0i { unsigned short v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0ll { unsigned short v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0s { unsigned short v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15i { unsigned short v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15s { unsigned short v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16i { unsigned short v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16s { unsigned short v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu17i { unsigned short v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu17ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1c { unsigned short v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1i { unsigned short v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1s { unsigned short v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu31i { unsigned short v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu31ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu32i { unsigned short v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu32ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu33 { unsigned short v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7c { unsigned short v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7i { unsigned short v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7s { unsigned short v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8c { unsigned short v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8i { unsigned short v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8s { unsigned short v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9i { unsigned short v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9s { unsigned short v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_C { unsigned short v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_D { unsigned short v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_F { unsigned short v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_I { unsigned short v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ip { unsigned short v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_L { unsigned short v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_S { unsigned short v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Uc { unsigned short v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ui { unsigned short v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ul { unsigned short v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Us { unsigned short v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Vp { unsigned short v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0s { unsigned short v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0c { unsigned short v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0i { unsigned short v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0ll { unsigned short v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0s { unsigned short v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15i { unsigned short v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15s { unsigned short v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16i { unsigned short v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16s { unsigned short v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu17i { unsigned short v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu17ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1c { unsigned short v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1i { unsigned short v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1s { unsigned short v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu31i { unsigned short v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu31ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu32i { unsigned short v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu32ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu33 { unsigned short v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7c { unsigned short v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7i { unsigned short v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7s { unsigned short v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8c { unsigned short v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8i { unsigned short v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8s { unsigned short v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9i { unsigned short v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9s { unsigned short v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_C { unsigned short v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_D { unsigned short v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_F { unsigned short v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_I { unsigned short v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ip { unsigned short v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_L { unsigned short v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_S { unsigned short v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Uc { unsigned short v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ui { unsigned short v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ul { unsigned short v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Us { unsigned short v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Vp { unsigned short v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0c { unsigned short v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0i { unsigned short v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0ll { unsigned short v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0s { unsigned short v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0c { unsigned short v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0i { unsigned short v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0ll { unsigned short v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0s { unsigned short v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0c { unsigned short v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0i { unsigned short v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0ll { unsigned short v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0s { unsigned short v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0c { unsigned short v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0i { unsigned short v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0ll { unsigned short v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0s { unsigned short v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0c { unsigned short v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0i { unsigned short v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0ll { unsigned short v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0s { unsigned short v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0c { unsigned short v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0i { unsigned short v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0ll { unsigned short v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0s { unsigned short v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0c { unsigned short v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0i { unsigned short v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0ll { unsigned short v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0s { unsigned short v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0c { unsigned short v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0i { unsigned short v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0ll { unsigned short v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0s { unsigned short v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0c { unsigned short v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0i { unsigned short v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0ll { unsigned short v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0s { unsigned short v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0c { unsigned short v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0i { unsigned short v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0ll { unsigned short v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0s { unsigned short v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0c { unsigned short v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0i { unsigned short v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0ll { unsigned short v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0s { unsigned short v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0c { unsigned short v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0i { unsigned short v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0ll { unsigned short v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0s { unsigned short v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0c { unsigned short v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0i { unsigned short v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0ll { unsigned short v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0s { unsigned short v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0c { unsigned short v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0i { unsigned short v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0ll { unsigned short v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0s { unsigned short v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0c { unsigned short v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0i { unsigned short v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0ll { unsigned short v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0s { unsigned short v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0c { unsigned short v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0i { unsigned short v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0ll { unsigned short v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0s { unsigned short v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0c { unsigned short v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0i { unsigned short v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0ll { unsigned short v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0s { unsigned short v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0c { unsigned short v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0i { unsigned short v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0ll { unsigned short v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0s { unsigned short v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0c { unsigned short v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0i { unsigned short v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0ll { unsigned short v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0s { unsigned short v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0c { unsigned short v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0i { unsigned short v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0ll { unsigned short v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0s { unsigned short v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0c { unsigned short v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0i { unsigned short v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0ll { unsigned short v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0s { unsigned short v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0c { unsigned short v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0i { unsigned short v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0ll { unsigned short v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0s { unsigned short v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0c { unsigned short v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0i { unsigned short v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0ll { unsigned short v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0s { unsigned short v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0c { unsigned short v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0i { unsigned short v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0ll { unsigned short v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0s { unsigned short v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0c { unsigned short v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0i { unsigned short v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0ll { unsigned short v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0s { unsigned short v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0c { unsigned short v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0i { unsigned short v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0ll { unsigned short v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0s { unsigned short v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0c { unsigned short v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0i { unsigned short v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0ll { unsigned short v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0s { unsigned short v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0c { unsigned short v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0i { unsigned short v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0ll { unsigned short v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0s { unsigned short v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0c { unsigned short v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0i { unsigned short v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0ll { unsigned short v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0s { unsigned short v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0c { unsigned short v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0i { unsigned short v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0ll { unsigned short v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0s { unsigned short v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0c { unsigned short v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0i { unsigned short v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0ll { unsigned short v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0s { unsigned short v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0c { unsigned short v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0i { unsigned short v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0ll { unsigned short v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0s { unsigned short v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0c { unsigned short v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0i { unsigned short v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0ll { unsigned short v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0s { unsigned short v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0c { unsigned short v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0i { unsigned short v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0ll { unsigned short v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0s { unsigned short v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0c { unsigned short v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0i { unsigned short v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0ll { unsigned short v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0s { unsigned short v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0c { unsigned short v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0i { unsigned short v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0ll { unsigned short v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0s { unsigned short v1:8; unsigned char v2; unsigned short :0; };
#endif // __cplusplus
#ifdef __cplusplus


static void Test_aBFu33_BFu0c_Vp()
{
  {
    init_simple_test("aBFu33_BFu0c_Vp");
    static aBFu33_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0c_Vp");
    check_field_offset(lv, v2, 5, "aBFu33_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0c_Vp(Test_aBFu33_BFu0c_Vp, "aBFu33_BFu0c_Vp", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0i");
    static aBFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i(Test_aBFu33_BFu0i, "aBFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0c");
    static aBFu33_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0c(Test_aBFu33_BFu0i_BFu0c, "aBFu33_BFu0i_BFu0c", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0i");
    static aBFu33_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0i(Test_aBFu33_BFu0i_BFu0i, "aBFu33_BFu0i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0ll");
    static aBFu33_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0ll(Test_aBFu33_BFu0i_BFu0ll, "aBFu33_BFu0i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0s");
    static aBFu33_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0s(Test_aBFu33_BFu0i_BFu0s, "aBFu33_BFu0i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15i");
    static aBFu33_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15i(Test_aBFu33_BFu0i_BFu15i, "aBFu33_BFu0i_BFu15i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15ll");
    static aBFu33_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15ll(Test_aBFu33_BFu0i_BFu15ll, "aBFu33_BFu0i_BFu15ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15s");
    static aBFu33_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15s(Test_aBFu33_BFu0i_BFu15s, "aBFu33_BFu0i_BFu15s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16i");
    static aBFu33_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16i(Test_aBFu33_BFu0i_BFu16i, "aBFu33_BFu0i_BFu16i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16ll");
    static aBFu33_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16ll(Test_aBFu33_BFu0i_BFu16ll, "aBFu33_BFu0i_BFu16ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16s");
    static aBFu33_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16s(Test_aBFu33_BFu0i_BFu16s, "aBFu33_BFu0i_BFu16s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu17i");
    static aBFu33_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu17i(Test_aBFu33_BFu0i_BFu17i, "aBFu33_BFu0i_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu17ll");
    static aBFu33_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu17ll(Test_aBFu33_BFu0i_BFu17ll, "aBFu33_BFu0i_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu1c");
    static aBFu33_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu1c(Test_aBFu33_BFu0i_BFu1c, "aBFu33_BFu0i_BFu1c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu1i");
    static aBFu33_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu1i(Test_aBFu33_BFu0i_BFu1i, "aBFu33_BFu0i_BFu1i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu1ll");
    static aBFu33_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu1ll(Test_aBFu33_BFu0i_BFu1ll, "aBFu33_BFu0i_BFu1ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu1s");
    static aBFu33_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu1s(Test_aBFu33_BFu0i_BFu1s, "aBFu33_BFu0i_BFu1s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu31i");
    static aBFu33_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu31i(Test_aBFu33_BFu0i_BFu31i, "aBFu33_BFu0i_BFu31i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu31ll");
    static aBFu33_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu31ll(Test_aBFu33_BFu0i_BFu31ll, "aBFu33_BFu0i_BFu31ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu32i");
    static aBFu33_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu32i(Test_aBFu33_BFu0i_BFu32i, "aBFu33_BFu0i_BFu32i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu32ll");
    static aBFu33_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu32ll(Test_aBFu33_BFu0i_BFu32ll, "aBFu33_BFu0i_BFu32ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu33");
    static aBFu33_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(aBFu33_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, 1, "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu33(Test_aBFu33_BFu0i_BFu33, "aBFu33_BFu0i_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7c");
    static aBFu33_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7c(Test_aBFu33_BFu0i_BFu7c, "aBFu33_BFu0i_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7i");
    static aBFu33_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7i(Test_aBFu33_BFu0i_BFu7i, "aBFu33_BFu0i_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7ll");
    static aBFu33_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7ll(Test_aBFu33_BFu0i_BFu7ll, "aBFu33_BFu0i_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7s");
    static aBFu33_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7s(Test_aBFu33_BFu0i_BFu7s, "aBFu33_BFu0i_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu8c");
    static aBFu33_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu8c(Test_aBFu33_BFu0i_BFu8c, "aBFu33_BFu0i_BFu8c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu8i");
    static aBFu33_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu8i(Test_aBFu33_BFu0i_BFu8i, "aBFu33_BFu0i_BFu8i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu8ll");
    static aBFu33_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu8ll(Test_aBFu33_BFu0i_BFu8ll, "aBFu33_BFu0i_BFu8ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu8s");
    static aBFu33_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu8s(Test_aBFu33_BFu0i_BFu8s, "aBFu33_BFu0i_BFu8s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu9i");
    static aBFu33_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu9i(Test_aBFu33_BFu0i_BFu9i, "aBFu33_BFu0i_BFu9i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu9ll");
    static aBFu33_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu9ll(Test_aBFu33_BFu0i_BFu9ll, "aBFu33_BFu0i_BFu9ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu9s");
    static aBFu33_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu9s(Test_aBFu33_BFu0i_BFu9s, "aBFu33_BFu0i_BFu9s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_C()
{
  {
    init_simple_test("aBFu33_BFu0i_C");
    static aBFu33_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_C(Test_aBFu33_BFu0i_C, "aBFu33_BFu0i_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_D()
{
  {
    init_simple_test("aBFu33_BFu0i_D");
    static aBFu33_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_D(Test_aBFu33_BFu0i_D, "aBFu33_BFu0i_D", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_F()
{
  {
    init_simple_test("aBFu33_BFu0i_F");
    static aBFu33_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_F(Test_aBFu33_BFu0i_F, "aBFu33_BFu0i_F", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_I()
{
  {
    init_simple_test("aBFu33_BFu0i_I");
    static aBFu33_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_I(Test_aBFu33_BFu0i_I, "aBFu33_BFu0i_I", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ip()
{
  {
    init_simple_test("aBFu33_BFu0i_Ip");
    static aBFu33_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ip(Test_aBFu33_BFu0i_Ip, "aBFu33_BFu0i_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_L()
{
  {
    init_simple_test("aBFu33_BFu0i_L");
    static aBFu33_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_L(Test_aBFu33_BFu0i_L, "aBFu33_BFu0i_L", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_S()
{
  {
    init_simple_test("aBFu33_BFu0i_S");
    static aBFu33_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_S(Test_aBFu33_BFu0i_S, "aBFu33_BFu0i_S", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Uc()
{
  {
    init_simple_test("aBFu33_BFu0i_Uc");
    static aBFu33_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Uc(Test_aBFu33_BFu0i_Uc, "aBFu33_BFu0i_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ui()
{
  {
    init_simple_test("aBFu33_BFu0i_Ui");
    static aBFu33_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ui(Test_aBFu33_BFu0i_Ui, "aBFu33_BFu0i_Ui", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ul()
{
  {
    init_simple_test("aBFu33_BFu0i_Ul");
    static aBFu33_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ul(Test_aBFu33_BFu0i_Ul, "aBFu33_BFu0i_Ul", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Us()
{
  {
    init_simple_test("aBFu33_BFu0i_Us");
    static aBFu33_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Us(Test_aBFu33_BFu0i_Us, "aBFu33_BFu0i_Us", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Vp()
{
  {
    init_simple_test("aBFu33_BFu0i_Vp");
    static aBFu33_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Vp(Test_aBFu33_BFu0i_Vp, "aBFu33_BFu0i_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0ll");
    static aBFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll(Test_aBFu33_BFu0ll, "aBFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0c");
    static aBFu33_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0c(Test_aBFu33_BFu0ll_BFu0c, "aBFu33_BFu0ll_BFu0c", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0i");
    static aBFu33_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0i(Test_aBFu33_BFu0ll_BFu0i, "aBFu33_BFu0ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0ll");
    static aBFu33_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0ll(Test_aBFu33_BFu0ll_BFu0ll, "aBFu33_BFu0ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0s");
    static aBFu33_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0s(Test_aBFu33_BFu0ll_BFu0s, "aBFu33_BFu0ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15i");
    static aBFu33_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15i(Test_aBFu33_BFu0ll_BFu15i, "aBFu33_BFu0ll_BFu15i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15ll");
    static aBFu33_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15ll(Test_aBFu33_BFu0ll_BFu15ll, "aBFu33_BFu0ll_BFu15ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15s");
    static aBFu33_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15s(Test_aBFu33_BFu0ll_BFu15s, "aBFu33_BFu0ll_BFu15s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16i");
    static aBFu33_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16i(Test_aBFu33_BFu0ll_BFu16i, "aBFu33_BFu0ll_BFu16i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16ll");
    static aBFu33_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16ll(Test_aBFu33_BFu0ll_BFu16ll, "aBFu33_BFu0ll_BFu16ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16s");
    static aBFu33_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16s(Test_aBFu33_BFu0ll_BFu16s, "aBFu33_BFu0ll_BFu16s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu17i");
    static aBFu33_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu17i(Test_aBFu33_BFu0ll_BFu17i, "aBFu33_BFu0ll_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu17ll");
    static aBFu33_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu17ll(Test_aBFu33_BFu0ll_BFu17ll, "aBFu33_BFu0ll_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu1c");
    static aBFu33_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu1c(Test_aBFu33_BFu0ll_BFu1c, "aBFu33_BFu0ll_BFu1c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu1i");
    static aBFu33_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu1i(Test_aBFu33_BFu0ll_BFu1i, "aBFu33_BFu0ll_BFu1i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu1ll");
    static aBFu33_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu1ll(Test_aBFu33_BFu0ll_BFu1ll, "aBFu33_BFu0ll_BFu1ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu1s");
    static aBFu33_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 1, 1, "aBFu33_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu1s(Test_aBFu33_BFu0ll_BFu1s, "aBFu33_BFu0ll_BFu1s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu31i");
    static aBFu33_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu31i(Test_aBFu33_BFu0ll_BFu31i, "aBFu33_BFu0ll_BFu31i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu31ll");
    static aBFu33_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu31ll(Test_aBFu33_BFu0ll_BFu31ll, "aBFu33_BFu0ll_BFu31ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu32i");
    static aBFu33_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu32i(Test_aBFu33_BFu0ll_BFu32i, "aBFu33_BFu0ll_BFu32i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu32ll");
    static aBFu33_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu32ll(Test_aBFu33_BFu0ll_BFu32ll, "aBFu33_BFu0ll_BFu32ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu33");
    static aBFu33_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(aBFu33_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, 1, "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu33(Test_aBFu33_BFu0ll_BFu33, "aBFu33_BFu0ll_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7c");
    static aBFu33_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7c(Test_aBFu33_BFu0ll_BFu7c, "aBFu33_BFu0ll_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7i");
    static aBFu33_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7i(Test_aBFu33_BFu0ll_BFu7i, "aBFu33_BFu0ll_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7ll");
    static aBFu33_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7ll(Test_aBFu33_BFu0ll_BFu7ll, "aBFu33_BFu0ll_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7s");
    static aBFu33_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7s(Test_aBFu33_BFu0ll_BFu7s, "aBFu33_BFu0ll_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu8c");
    static aBFu33_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu8c(Test_aBFu33_BFu0ll_BFu8c, "aBFu33_BFu0ll_BFu8c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu8i");
    static aBFu33_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu8i(Test_aBFu33_BFu0ll_BFu8i, "aBFu33_BFu0ll_BFu8i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu8ll");
    static aBFu33_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu8ll(Test_aBFu33_BFu0ll_BFu8ll, "aBFu33_BFu0ll_BFu8ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu8s");
    static aBFu33_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, 1, "aBFu33_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu8s(Test_aBFu33_BFu0ll_BFu8s, "aBFu33_BFu0ll_BFu8s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu9i");
    static aBFu33_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu9i(Test_aBFu33_BFu0ll_BFu9i, "aBFu33_BFu0ll_BFu9i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu9ll");
    static aBFu33_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu9ll(Test_aBFu33_BFu0ll_BFu9ll, "aBFu33_BFu0ll_BFu9ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu9s");
    static aBFu33_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, 1, "aBFu33_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu9s(Test_aBFu33_BFu0ll_BFu9s, "aBFu33_BFu0ll_BFu9s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_C()
{
  {
    init_simple_test("aBFu33_BFu0ll_C");
    static aBFu33_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_C(Test_aBFu33_BFu0ll_C, "aBFu33_BFu0ll_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_D()
{
  {
    init_simple_test("aBFu33_BFu0ll_D");
    static aBFu33_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_D(Test_aBFu33_BFu0ll_D, "aBFu33_BFu0ll_D", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_F()
{
  {
    init_simple_test("aBFu33_BFu0ll_F");
    static aBFu33_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_F(Test_aBFu33_BFu0ll_F, "aBFu33_BFu0ll_F", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_I()
{
  {
    init_simple_test("aBFu33_BFu0ll_I");
    static aBFu33_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_I(Test_aBFu33_BFu0ll_I, "aBFu33_BFu0ll_I", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ip");
    static aBFu33_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ip(Test_aBFu33_BFu0ll_Ip, "aBFu33_BFu0ll_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_L()
{
  {
    init_simple_test("aBFu33_BFu0ll_L");
    static aBFu33_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_L(Test_aBFu33_BFu0ll_L, "aBFu33_BFu0ll_L", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_S()
{
  {
    init_simple_test("aBFu33_BFu0ll_S");
    static aBFu33_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_S(Test_aBFu33_BFu0ll_S, "aBFu33_BFu0ll_S", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu33_BFu0ll_Uc");
    static aBFu33_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Uc(Test_aBFu33_BFu0ll_Uc, "aBFu33_BFu0ll_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ui");
    static aBFu33_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ui(Test_aBFu33_BFu0ll_Ui, "aBFu33_BFu0ll_Ui", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ul");
    static aBFu33_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ul(Test_aBFu33_BFu0ll_Ul, "aBFu33_BFu0ll_Ul", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Us()
{
  {
    init_simple_test("aBFu33_BFu0ll_Us");
    static aBFu33_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Us(Test_aBFu33_BFu0ll_Us, "aBFu33_BFu0ll_Us", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu33_BFu0ll_Vp");
    static aBFu33_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Vp(Test_aBFu33_BFu0ll_Vp, "aBFu33_BFu0ll_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0s");
    static aBFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s(Test_aBFu33_BFu0s, "aBFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0c");
    static aBFu33_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0c(Test_aBFu33_BFu0s_BFu0c, "aBFu33_BFu0s_BFu0c", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0i");
    static aBFu33_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0i(Test_aBFu33_BFu0s_BFu0i, "aBFu33_BFu0s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0ll");
    static aBFu33_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0ll(Test_aBFu33_BFu0s_BFu0ll, "aBFu33_BFu0s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0s");
    static aBFu33_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0s(Test_aBFu33_BFu0s_BFu0s, "aBFu33_BFu0s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15i");
    static aBFu33_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15i(Test_aBFu33_BFu0s_BFu15i, "aBFu33_BFu0s_BFu15i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15ll");
    static aBFu33_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15ll(Test_aBFu33_BFu0s_BFu15ll, "aBFu33_BFu0s_BFu15ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15s");
    static aBFu33_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15s(Test_aBFu33_BFu0s_BFu15s, "aBFu33_BFu0s_BFu15s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16i");
    static aBFu33_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16i(Test_aBFu33_BFu0s_BFu16i, "aBFu33_BFu0s_BFu16i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16ll");
    static aBFu33_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16ll(Test_aBFu33_BFu0s_BFu16ll, "aBFu33_BFu0s_BFu16ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16s");
    static aBFu33_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16s(Test_aBFu33_BFu0s_BFu16s, "aBFu33_BFu0s_BFu16s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu17i");
    static aBFu33_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, 1, "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu17i(Test_aBFu33_BFu0s_BFu17i, "aBFu33_BFu0s_BFu17i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu17ll");
    static aBFu33_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, 1, "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu17ll(Test_aBFu33_BFu0s_BFu17ll, "aBFu33_BFu0s_BFu17ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1c");
    static aBFu33_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1c(Test_aBFu33_BFu0s_BFu1c, "aBFu33_BFu0s_BFu1c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1i");
    static aBFu33_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1i(Test_aBFu33_BFu0s_BFu1i, "aBFu33_BFu0s_BFu1i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1ll");
    static aBFu33_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1ll(Test_aBFu33_BFu0s_BFu1ll, "aBFu33_BFu0s_BFu1ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1s");
    static aBFu33_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1s(Test_aBFu33_BFu0s_BFu1s, "aBFu33_BFu0s_BFu1s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu31i");
    static aBFu33_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, 1, "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu31i(Test_aBFu33_BFu0s_BFu31i, "aBFu33_BFu0s_BFu31i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu31ll");
    static aBFu33_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, 1, "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu31ll(Test_aBFu33_BFu0s_BFu31ll, "aBFu33_BFu0s_BFu31ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu32i");
    static aBFu33_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, 1, "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu32i(Test_aBFu33_BFu0s_BFu32i, "aBFu33_BFu0s_BFu32i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu32ll");
    static aBFu33_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, 1, "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu32ll(Test_aBFu33_BFu0s_BFu32ll, "aBFu33_BFu0s_BFu32ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu33");
    static aBFu33_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 33, 1, "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu33(Test_aBFu33_BFu0s_BFu33, "aBFu33_BFu0s_BFu33", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7c");
    static aBFu33_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7c(Test_aBFu33_BFu0s_BFu7c, "aBFu33_BFu0s_BFu7c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7i");
    static aBFu33_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7i(Test_aBFu33_BFu0s_BFu7i, "aBFu33_BFu0s_BFu7i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7ll");
    static aBFu33_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7ll(Test_aBFu33_BFu0s_BFu7ll, "aBFu33_BFu0s_BFu7ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7s");
    static aBFu33_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7s(Test_aBFu33_BFu0s_BFu7s, "aBFu33_BFu0s_BFu7s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8c");
    static aBFu33_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8c(Test_aBFu33_BFu0s_BFu8c, "aBFu33_BFu0s_BFu8c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8i");
    static aBFu33_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8i(Test_aBFu33_BFu0s_BFu8i, "aBFu33_BFu0s_BFu8i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8ll");
    static aBFu33_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8ll(Test_aBFu33_BFu0s_BFu8ll, "aBFu33_BFu0s_BFu8ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8s");
    static aBFu33_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8s(Test_aBFu33_BFu0s_BFu8s, "aBFu33_BFu0s_BFu8s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu9i");
    static aBFu33_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, 1, "aBFu33_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu9i(Test_aBFu33_BFu0s_BFu9i, "aBFu33_BFu0s_BFu9i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu9ll");
    static aBFu33_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, 1, "aBFu33_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu9ll(Test_aBFu33_BFu0s_BFu9ll, "aBFu33_BFu0s_BFu9ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu9s");
    static aBFu33_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, 1, "aBFu33_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu33_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu9s(Test_aBFu33_BFu0s_BFu9s, "aBFu33_BFu0s_BFu9s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_C()
{
  {
    init_simple_test("aBFu33_BFu0s_C");
    static aBFu33_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_C(Test_aBFu33_BFu0s_C, "aBFu33_BFu0s_C", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_D()
{
  {
    init_simple_test("aBFu33_BFu0s_D");
    static aBFu33_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_D(Test_aBFu33_BFu0s_D, "aBFu33_BFu0s_D", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_F()
{
  {
    init_simple_test("aBFu33_BFu0s_F");
    static aBFu33_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_F(Test_aBFu33_BFu0s_F, "aBFu33_BFu0s_F", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_I()
{
  {
    init_simple_test("aBFu33_BFu0s_I");
    static aBFu33_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_I(Test_aBFu33_BFu0s_I, "aBFu33_BFu0s_I", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ip()
{
  {
    init_simple_test("aBFu33_BFu0s_Ip");
    static aBFu33_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ip(Test_aBFu33_BFu0s_Ip, "aBFu33_BFu0s_Ip", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_L()
{
  {
    init_simple_test("aBFu33_BFu0s_L");
    static aBFu33_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_L(Test_aBFu33_BFu0s_L, "aBFu33_BFu0s_L", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_S()
{
  {
    init_simple_test("aBFu33_BFu0s_S");
    static aBFu33_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_S(Test_aBFu33_BFu0s_S, "aBFu33_BFu0s_S", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Uc()
{
  {
    init_simple_test("aBFu33_BFu0s_Uc");
    static aBFu33_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Uc(Test_aBFu33_BFu0s_Uc, "aBFu33_BFu0s_Uc", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ui()
{
  {
    init_simple_test("aBFu33_BFu0s_Ui");
    static aBFu33_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ui(Test_aBFu33_BFu0s_Ui, "aBFu33_BFu0s_Ui", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ul()
{
  {
    init_simple_test("aBFu33_BFu0s_Ul");
    static aBFu33_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ul(Test_aBFu33_BFu0s_Ul, "aBFu33_BFu0s_Ul", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Us()
{
  {
    init_simple_test("aBFu33_BFu0s_Us");
    static aBFu33_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Us(Test_aBFu33_BFu0s_Us, "aBFu33_BFu0s_Us", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Vp()
{
  {
    init_simple_test("aBFu33_BFu0s_Vp");
    static aBFu33_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Vp(Test_aBFu33_BFu0s_Vp, "aBFu33_BFu0s_Vp", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0c");
    static aBFu33_BFu15i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0c(Test_aBFu33_BFu15i_BFu0c, "aBFu33_BFu15i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0i");
    static aBFu33_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0i(Test_aBFu33_BFu15i_BFu0i, "aBFu33_BFu15i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0ll");
    static aBFu33_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0ll(Test_aBFu33_BFu15i_BFu0ll, "aBFu33_BFu15i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0s");
    static aBFu33_BFu15i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0s(Test_aBFu33_BFu15i_BFu0s, "aBFu33_BFu15i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0c");
    static aBFu33_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0c(Test_aBFu33_BFu15ll_BFu0c, "aBFu33_BFu15ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0i");
    static aBFu33_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0i(Test_aBFu33_BFu15ll_BFu0i, "aBFu33_BFu15ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0ll");
    static aBFu33_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0ll(Test_aBFu33_BFu15ll_BFu0ll, "aBFu33_BFu15ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0s");
    static aBFu33_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0s(Test_aBFu33_BFu15ll_BFu0s, "aBFu33_BFu15ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0c");
    static aBFu33_BFu15s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0c(Test_aBFu33_BFu15s_BFu0c, "aBFu33_BFu15s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0i");
    static aBFu33_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0i(Test_aBFu33_BFu15s_BFu0i, "aBFu33_BFu15s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0ll");
    static aBFu33_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0ll(Test_aBFu33_BFu15s_BFu0ll, "aBFu33_BFu15s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0s");
    static aBFu33_BFu15s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0s(Test_aBFu33_BFu15s_BFu0s, "aBFu33_BFu15s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0c");
    static aBFu33_BFu16i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0c(Test_aBFu33_BFu16i_BFu0c, "aBFu33_BFu16i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0i");
    static aBFu33_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0i(Test_aBFu33_BFu16i_BFu0i, "aBFu33_BFu16i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0ll");
    static aBFu33_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0ll(Test_aBFu33_BFu16i_BFu0ll, "aBFu33_BFu16i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0s");
    static aBFu33_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0s(Test_aBFu33_BFu16i_BFu0s, "aBFu33_BFu16i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0c");
    static aBFu33_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0c(Test_aBFu33_BFu16ll_BFu0c, "aBFu33_BFu16ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0i");
    static aBFu33_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0i(Test_aBFu33_BFu16ll_BFu0i, "aBFu33_BFu16ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0ll");
    static aBFu33_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0ll(Test_aBFu33_BFu16ll_BFu0ll, "aBFu33_BFu16ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0s");
    static aBFu33_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0s(Test_aBFu33_BFu16ll_BFu0s, "aBFu33_BFu16ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0c");
    static aBFu33_BFu16s_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0c(Test_aBFu33_BFu16s_BFu0c, "aBFu33_BFu16s_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0i");
    static aBFu33_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0i(Test_aBFu33_BFu16s_BFu0i, "aBFu33_BFu16s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0ll");
    static aBFu33_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0ll(Test_aBFu33_BFu16s_BFu0ll, "aBFu33_BFu16s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0s");
    static aBFu33_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0s(Test_aBFu33_BFu16s_BFu0s, "aBFu33_BFu16s_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0c");
    static aBFu33_BFu17i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0c(Test_aBFu33_BFu17i_BFu0c, "aBFu33_BFu17i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0i");
    static aBFu33_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0i(Test_aBFu33_BFu17i_BFu0i, "aBFu33_BFu17i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0ll");
    static aBFu33_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0ll(Test_aBFu33_BFu17i_BFu0ll, "aBFu33_BFu17i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0s");
    static aBFu33_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0s(Test_aBFu33_BFu17i_BFu0s, "aBFu33_BFu17i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0c");
    static aBFu33_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0c(Test_aBFu33_BFu17ll_BFu0c, "aBFu33_BFu17ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0i");
    static aBFu33_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0i(Test_aBFu33_BFu17ll_BFu0i, "aBFu33_BFu17ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0ll");
    static aBFu33_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0ll(Test_aBFu33_BFu17ll_BFu0ll, "aBFu33_BFu17ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0s");
    static aBFu33_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0s(Test_aBFu33_BFu17ll_BFu0s, "aBFu33_BFu17ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0c");
    static aBFu33_BFu1c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0c(Test_aBFu33_BFu1c_BFu0c, "aBFu33_BFu1c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0i");
    static aBFu33_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0i(Test_aBFu33_BFu1c_BFu0i, "aBFu33_BFu1c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0ll");
    static aBFu33_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0ll(Test_aBFu33_BFu1c_BFu0ll, "aBFu33_BFu1c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0s");
    static aBFu33_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0s(Test_aBFu33_BFu1c_BFu0s, "aBFu33_BFu1c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0c");
    static aBFu33_BFu1i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0c(Test_aBFu33_BFu1i_BFu0c, "aBFu33_BFu1i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0i");
    static aBFu33_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0i(Test_aBFu33_BFu1i_BFu0i, "aBFu33_BFu1i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0ll");
    static aBFu33_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0ll(Test_aBFu33_BFu1i_BFu0ll, "aBFu33_BFu1i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0s");
    static aBFu33_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0s(Test_aBFu33_BFu1i_BFu0s, "aBFu33_BFu1i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0c");
    static aBFu33_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0c(Test_aBFu33_BFu1ll_BFu0c, "aBFu33_BFu1ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0i");
    static aBFu33_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0i(Test_aBFu33_BFu1ll_BFu0i, "aBFu33_BFu1ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0ll");
    static aBFu33_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0ll(Test_aBFu33_BFu1ll_BFu0ll, "aBFu33_BFu1ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0s");
    static aBFu33_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0s(Test_aBFu33_BFu1ll_BFu0s, "aBFu33_BFu1ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0c");
    static aBFu33_BFu1s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0c(Test_aBFu33_BFu1s_BFu0c, "aBFu33_BFu1s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0i");
    static aBFu33_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0i(Test_aBFu33_BFu1s_BFu0i, "aBFu33_BFu1s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0ll");
    static aBFu33_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0ll(Test_aBFu33_BFu1s_BFu0ll, "aBFu33_BFu1s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0s");
    static aBFu33_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0s(Test_aBFu33_BFu1s_BFu0s, "aBFu33_BFu1s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0c");
    static aBFu33_BFu31i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0c(Test_aBFu33_BFu31i_BFu0c, "aBFu33_BFu31i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0i");
    static aBFu33_BFu31i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0i(Test_aBFu33_BFu31i_BFu0i, "aBFu33_BFu31i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0ll");
    static aBFu33_BFu31i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0ll(Test_aBFu33_BFu31i_BFu0ll, "aBFu33_BFu31i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0s");
    static aBFu33_BFu31i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0s(Test_aBFu33_BFu31i_BFu0s, "aBFu33_BFu31i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0c");
    static aBFu33_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0c(Test_aBFu33_BFu31ll_BFu0c, "aBFu33_BFu31ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0i");
    static aBFu33_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0i(Test_aBFu33_BFu31ll_BFu0i, "aBFu33_BFu31ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0ll");
    static aBFu33_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0ll(Test_aBFu33_BFu31ll_BFu0ll, "aBFu33_BFu31ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0s");
    static aBFu33_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0s(Test_aBFu33_BFu31ll_BFu0s, "aBFu33_BFu31ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0c");
    static aBFu33_BFu32i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0c(Test_aBFu33_BFu32i_BFu0c, "aBFu33_BFu32i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0i");
    static aBFu33_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0i(Test_aBFu33_BFu32i_BFu0i, "aBFu33_BFu32i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0ll");
    static aBFu33_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0ll(Test_aBFu33_BFu32i_BFu0ll, "aBFu33_BFu32i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0s");
    static aBFu33_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0s(Test_aBFu33_BFu32i_BFu0s, "aBFu33_BFu32i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0c");
    static aBFu33_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0c(Test_aBFu33_BFu32ll_BFu0c, "aBFu33_BFu32ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0i");
    static aBFu33_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0i(Test_aBFu33_BFu32ll_BFu0i, "aBFu33_BFu32ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0ll");
    static aBFu33_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0ll(Test_aBFu33_BFu32ll_BFu0ll, "aBFu33_BFu32ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0s");
    static aBFu33_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0s(Test_aBFu33_BFu32ll_BFu0s, "aBFu33_BFu32ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0c");
    static aBFu33_BFu33_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0c(Test_aBFu33_BFu33_BFu0c, "aBFu33_BFu33_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0i");
    static aBFu33_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0i(Test_aBFu33_BFu33_BFu0i, "aBFu33_BFu33_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0ll");
    static aBFu33_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0ll(Test_aBFu33_BFu33_BFu0ll, "aBFu33_BFu33_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0s");
    static aBFu33_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0s(Test_aBFu33_BFu33_BFu0s, "aBFu33_BFu33_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0c");
    static aBFu33_BFu7c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0c(Test_aBFu33_BFu7c_BFu0c, "aBFu33_BFu7c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0i");
    static aBFu33_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0i(Test_aBFu33_BFu7c_BFu0i, "aBFu33_BFu7c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0ll");
    static aBFu33_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0ll(Test_aBFu33_BFu7c_BFu0ll, "aBFu33_BFu7c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0s");
    static aBFu33_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0s(Test_aBFu33_BFu7c_BFu0s, "aBFu33_BFu7c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0c");
    static aBFu33_BFu7i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0c(Test_aBFu33_BFu7i_BFu0c, "aBFu33_BFu7i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0i");
    static aBFu33_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0i(Test_aBFu33_BFu7i_BFu0i, "aBFu33_BFu7i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0ll");
    static aBFu33_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0ll(Test_aBFu33_BFu7i_BFu0ll, "aBFu33_BFu7i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0s");
    static aBFu33_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0s(Test_aBFu33_BFu7i_BFu0s, "aBFu33_BFu7i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0c");
    static aBFu33_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0c(Test_aBFu33_BFu7ll_BFu0c, "aBFu33_BFu7ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0i");
    static aBFu33_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0i(Test_aBFu33_BFu7ll_BFu0i, "aBFu33_BFu7ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0ll");
    static aBFu33_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0ll(Test_aBFu33_BFu7ll_BFu0ll, "aBFu33_BFu7ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0s");
    static aBFu33_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0s(Test_aBFu33_BFu7ll_BFu0s, "aBFu33_BFu7ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0c");
    static aBFu33_BFu7s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0c(Test_aBFu33_BFu7s_BFu0c, "aBFu33_BFu7s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0i");
    static aBFu33_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0i(Test_aBFu33_BFu7s_BFu0i, "aBFu33_BFu7s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0ll");
    static aBFu33_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0ll(Test_aBFu33_BFu7s_BFu0ll, "aBFu33_BFu7s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0s");
    static aBFu33_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0s(Test_aBFu33_BFu7s_BFu0s, "aBFu33_BFu7s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0c");
    static aBFu33_BFu8c_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0c(Test_aBFu33_BFu8c_BFu0c, "aBFu33_BFu8c_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0i");
    static aBFu33_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0i(Test_aBFu33_BFu8c_BFu0i, "aBFu33_BFu8c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0ll");
    static aBFu33_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0ll(Test_aBFu33_BFu8c_BFu0ll, "aBFu33_BFu8c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0s");
    static aBFu33_BFu8c_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0s(Test_aBFu33_BFu8c_BFu0s, "aBFu33_BFu8c_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0c");
    static aBFu33_BFu8i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0c(Test_aBFu33_BFu8i_BFu0c, "aBFu33_BFu8i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0i");
    static aBFu33_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0i(Test_aBFu33_BFu8i_BFu0i, "aBFu33_BFu8i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0ll");
    static aBFu33_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0ll(Test_aBFu33_BFu8i_BFu0ll, "aBFu33_BFu8i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0s");
    static aBFu33_BFu8i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0s(Test_aBFu33_BFu8i_BFu0s, "aBFu33_BFu8i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0c");
    static aBFu33_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0c(Test_aBFu33_BFu8ll_BFu0c, "aBFu33_BFu8ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0i");
    static aBFu33_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0i(Test_aBFu33_BFu8ll_BFu0i, "aBFu33_BFu8ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0ll");
    static aBFu33_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0ll(Test_aBFu33_BFu8ll_BFu0ll, "aBFu33_BFu8ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0s");
    static aBFu33_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0s(Test_aBFu33_BFu8ll_BFu0s, "aBFu33_BFu8ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0c");
    static aBFu33_BFu8s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0c(Test_aBFu33_BFu8s_BFu0c, "aBFu33_BFu8s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0i");
    static aBFu33_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0i(Test_aBFu33_BFu8s_BFu0i, "aBFu33_BFu8s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0ll");
    static aBFu33_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0ll(Test_aBFu33_BFu8s_BFu0ll, "aBFu33_BFu8s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0s");
    static aBFu33_BFu8s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0s(Test_aBFu33_BFu8s_BFu0s, "aBFu33_BFu8s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu9i_BFu0c");
    static aBFu33_BFu9i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9i_BFu0c(Test_aBFu33_BFu9i_BFu0c, "aBFu33_BFu9i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu9i_BFu0i");
    static aBFu33_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9i_BFu0i(Test_aBFu33_BFu9i_BFu0i, "aBFu33_BFu9i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu9i_BFu0ll");
    static aBFu33_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9i_BFu0ll(Test_aBFu33_BFu9i_BFu0ll, "aBFu33_BFu9i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu9i_BFu0s");
    static aBFu33_BFu9i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9i_BFu0s(Test_aBFu33_BFu9i_BFu0s, "aBFu33_BFu9i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu9ll_BFu0c");
    static aBFu33_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9ll_BFu0c(Test_aBFu33_BFu9ll_BFu0c, "aBFu33_BFu9ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu9ll_BFu0i");
    static aBFu33_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9ll_BFu0i(Test_aBFu33_BFu9ll_BFu0i, "aBFu33_BFu9ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu9ll_BFu0ll");
    static aBFu33_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9ll_BFu0ll(Test_aBFu33_BFu9ll_BFu0ll, "aBFu33_BFu9ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu9ll_BFu0s");
    static aBFu33_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9ll_BFu0s(Test_aBFu33_BFu9ll_BFu0s, "aBFu33_BFu9ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu9s_BFu0c");
    static aBFu33_BFu9s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9s_BFu0c(Test_aBFu33_BFu9s_BFu0c, "aBFu33_BFu9s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu9s_BFu0i");
    static aBFu33_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9s_BFu0i(Test_aBFu33_BFu9s_BFu0i, "aBFu33_BFu9s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu9s_BFu0ll");
    static aBFu33_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9s_BFu0ll(Test_aBFu33_BFu9s_BFu0ll, "aBFu33_BFu9s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu9s_BFu0s");
    static aBFu33_BFu9s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "aBFu33_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "aBFu33_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu9s_BFu0s(Test_aBFu33_BFu9s_BFu0s, "aBFu33_BFu9s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0c()
{
  {
    init_simple_test("aBFu33_C_BFu0c");
    static aBFu33_C_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0c(Test_aBFu33_C_BFu0c, "aBFu33_C_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0i()
{
  {
    init_simple_test("aBFu33_C_BFu0i");
    static aBFu33_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0i(Test_aBFu33_C_BFu0i, "aBFu33_C_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0ll()
{
  {
    init_simple_test("aBFu33_C_BFu0ll");
    static aBFu33_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0ll(Test_aBFu33_C_BFu0ll, "aBFu33_C_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0s()
{
  {
    init_simple_test("aBFu33_C_BFu0s");
    static aBFu33_C_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0s(Test_aBFu33_C_BFu0s, "aBFu33_C_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0c()
{
  {
    init_simple_test("aBFu33_D_BFu0c");
    static aBFu33_D_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0c(Test_aBFu33_D_BFu0c, "aBFu33_D_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0i()
{
  {
    init_simple_test("aBFu33_D_BFu0i");
    static aBFu33_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0i(Test_aBFu33_D_BFu0i, "aBFu33_D_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0ll()
{
  {
    init_simple_test("aBFu33_D_BFu0ll");
    static aBFu33_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0ll(Test_aBFu33_D_BFu0ll, "aBFu33_D_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0s()
{
  {
    init_simple_test("aBFu33_D_BFu0s");
    static aBFu33_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0s(Test_aBFu33_D_BFu0s, "aBFu33_D_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0c()
{
  {
    init_simple_test("aBFu33_F_BFu0c");
    static aBFu33_F_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0c(Test_aBFu33_F_BFu0c, "aBFu33_F_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0i()
{
  {
    init_simple_test("aBFu33_F_BFu0i");
    static aBFu33_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0i(Test_aBFu33_F_BFu0i, "aBFu33_F_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0ll()
{
  {
    init_simple_test("aBFu33_F_BFu0ll");
    static aBFu33_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0ll(Test_aBFu33_F_BFu0ll, "aBFu33_F_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0s()
{
  {
    init_simple_test("aBFu33_F_BFu0s");
    static aBFu33_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0s(Test_aBFu33_F_BFu0s, "aBFu33_F_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0c()
{
  {
    init_simple_test("aBFu33_I_BFu0c");
    static aBFu33_I_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0c(Test_aBFu33_I_BFu0c, "aBFu33_I_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0i()
{
  {
    init_simple_test("aBFu33_I_BFu0i");
    static aBFu33_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0i(Test_aBFu33_I_BFu0i, "aBFu33_I_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0ll()
{
  {
    init_simple_test("aBFu33_I_BFu0ll");
    static aBFu33_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0ll(Test_aBFu33_I_BFu0ll, "aBFu33_I_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0s()
{
  {
    init_simple_test("aBFu33_I_BFu0s");
    static aBFu33_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0s(Test_aBFu33_I_BFu0s, "aBFu33_I_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0c()
{
  {
    init_simple_test("aBFu33_Ip_BFu0c");
    static aBFu33_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0c(Test_aBFu33_Ip_BFu0c, "aBFu33_Ip_BFu0c", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0i()
{
  {
    init_simple_test("aBFu33_Ip_BFu0i");
    static aBFu33_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0i(Test_aBFu33_Ip_BFu0i, "aBFu33_Ip_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ip_BFu0ll");
    static aBFu33_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0ll(Test_aBFu33_Ip_BFu0ll, "aBFu33_Ip_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0s()
{
  {
    init_simple_test("aBFu33_Ip_BFu0s");
    static aBFu33_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0s(Test_aBFu33_Ip_BFu0s, "aBFu33_Ip_BFu0s", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0c()
{
  {
    init_simple_test("aBFu33_L_BFu0c");
    static aBFu33_L_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0c(Test_aBFu33_L_BFu0c, "aBFu33_L_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0i()
{
  {
    init_simple_test("aBFu33_L_BFu0i");
    static aBFu33_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0i(Test_aBFu33_L_BFu0i, "aBFu33_L_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0ll()
{
  {
    init_simple_test("aBFu33_L_BFu0ll");
    static aBFu33_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0ll(Test_aBFu33_L_BFu0ll, "aBFu33_L_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0s()
{
  {
    init_simple_test("aBFu33_L_BFu0s");
    static aBFu33_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0s(Test_aBFu33_L_BFu0s, "aBFu33_L_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0c()
{
  {
    init_simple_test("aBFu33_S_BFu0c");
    static aBFu33_S_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0c(Test_aBFu33_S_BFu0c, "aBFu33_S_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0i()
{
  {
    init_simple_test("aBFu33_S_BFu0i");
    static aBFu33_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0i(Test_aBFu33_S_BFu0i, "aBFu33_S_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0ll()
{
  {
    init_simple_test("aBFu33_S_BFu0ll");
    static aBFu33_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0ll(Test_aBFu33_S_BFu0ll, "aBFu33_S_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0s()
{
  {
    init_simple_test("aBFu33_S_BFu0s");
    static aBFu33_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0s(Test_aBFu33_S_BFu0s, "aBFu33_S_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0c()
{
  {
    init_simple_test("aBFu33_Uc_BFu0c");
    static aBFu33_Uc_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0c(Test_aBFu33_Uc_BFu0c, "aBFu33_Uc_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0i()
{
  {
    init_simple_test("aBFu33_Uc_BFu0i");
    static aBFu33_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0i(Test_aBFu33_Uc_BFu0i, "aBFu33_Uc_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu33_Uc_BFu0ll");
    static aBFu33_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0ll(Test_aBFu33_Uc_BFu0ll, "aBFu33_Uc_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0s()
{
  {
    init_simple_test("aBFu33_Uc_BFu0s");
    static aBFu33_Uc_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0s(Test_aBFu33_Uc_BFu0s, "aBFu33_Uc_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0c()
{
  {
    init_simple_test("aBFu33_Ui_BFu0c");
    static aBFu33_Ui_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0c(Test_aBFu33_Ui_BFu0c, "aBFu33_Ui_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0i()
{
  {
    init_simple_test("aBFu33_Ui_BFu0i");
    static aBFu33_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0i(Test_aBFu33_Ui_BFu0i, "aBFu33_Ui_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ui_BFu0ll");
    static aBFu33_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0ll(Test_aBFu33_Ui_BFu0ll, "aBFu33_Ui_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0s()
{
  {
    init_simple_test("aBFu33_Ui_BFu0s");
    static aBFu33_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0s(Test_aBFu33_Ui_BFu0s, "aBFu33_Ui_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0c()
{
  {
    init_simple_test("aBFu33_Ul_BFu0c");
    static aBFu33_Ul_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0c(Test_aBFu33_Ul_BFu0c, "aBFu33_Ul_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0i()
{
  {
    init_simple_test("aBFu33_Ul_BFu0i");
    static aBFu33_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0i(Test_aBFu33_Ul_BFu0i, "aBFu33_Ul_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ul_BFu0ll");
    static aBFu33_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0ll(Test_aBFu33_Ul_BFu0ll, "aBFu33_Ul_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0s()
{
  {
    init_simple_test("aBFu33_Ul_BFu0s");
    static aBFu33_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0s(Test_aBFu33_Ul_BFu0s, "aBFu33_Ul_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0c()
{
  {
    init_simple_test("aBFu33_Us_BFu0c");
    static aBFu33_Us_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0c(Test_aBFu33_Us_BFu0c, "aBFu33_Us_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0i()
{
  {
    init_simple_test("aBFu33_Us_BFu0i");
    static aBFu33_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0i(Test_aBFu33_Us_BFu0i, "aBFu33_Us_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0ll()
{
  {
    init_simple_test("aBFu33_Us_BFu0ll");
    static aBFu33_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0ll(Test_aBFu33_Us_BFu0ll, "aBFu33_Us_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0s()
{
  {
    init_simple_test("aBFu33_Us_BFu0s");
    static aBFu33_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0s(Test_aBFu33_Us_BFu0s, "aBFu33_Us_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0c()
{
  {
    init_simple_test("aBFu33_Vp_BFu0c");
    static aBFu33_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0c(Test_aBFu33_Vp_BFu0c, "aBFu33_Vp_BFu0c", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0i()
{
  {
    init_simple_test("aBFu33_Vp_BFu0i");
    static aBFu33_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0i(Test_aBFu33_Vp_BFu0i, "aBFu33_Vp_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu33_Vp_BFu0ll");
    static aBFu33_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0ll(Test_aBFu33_Vp_BFu0ll, "aBFu33_Vp_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0s()
{
  {
    init_simple_test("aBFu33_Vp_BFu0s");
    static aBFu33_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0s(Test_aBFu33_Vp_BFu0s, "aBFu33_Vp_BFu0s", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0c");
    static aBFu7c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c(Test_aBFu7c_BFu0c, "aBFu7c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0c");
    static aBFu7c_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0c(Test_aBFu7c_BFu0c_BFu0c, "aBFu7c_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0i");
    static aBFu7c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0i(Test_aBFu7c_BFu0c_BFu0i, "aBFu7c_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0ll");
    static aBFu7c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0ll(Test_aBFu7c_BFu0c_BFu0ll, "aBFu7c_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0s");
    static aBFu7c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0s(Test_aBFu7c_BFu0c_BFu0s, "aBFu7c_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15i");
    static aBFu7c_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15i(Test_aBFu7c_BFu0c_BFu15i, "aBFu7c_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15ll");
    static aBFu7c_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15ll(Test_aBFu7c_BFu0c_BFu15ll, "aBFu7c_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15s");
    static aBFu7c_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15s(Test_aBFu7c_BFu0c_BFu15s, "aBFu7c_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16i");
    static aBFu7c_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16i(Test_aBFu7c_BFu0c_BFu16i, "aBFu7c_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16ll");
    static aBFu7c_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16ll(Test_aBFu7c_BFu0c_BFu16ll, "aBFu7c_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16s");
    static aBFu7c_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16s(Test_aBFu7c_BFu0c_BFu16s, "aBFu7c_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu17i");
    static aBFu7c_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu17i(Test_aBFu7c_BFu0c_BFu17i, "aBFu7c_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu17ll");
    static aBFu7c_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu17ll(Test_aBFu7c_BFu0c_BFu17ll, "aBFu7c_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1c");
    static aBFu7c_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1c(Test_aBFu7c_BFu0c_BFu1c, "aBFu7c_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1i");
    static aBFu7c_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1i(Test_aBFu7c_BFu0c_BFu1i, "aBFu7c_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1ll");
    static aBFu7c_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1ll(Test_aBFu7c_BFu0c_BFu1ll, "aBFu7c_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1s");
    static aBFu7c_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1s(Test_aBFu7c_BFu0c_BFu1s, "aBFu7c_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu31i");
    static aBFu7c_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu31i(Test_aBFu7c_BFu0c_BFu31i, "aBFu7c_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu31ll");
    static aBFu7c_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu31ll(Test_aBFu7c_BFu0c_BFu31ll, "aBFu7c_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu32i");
    static aBFu7c_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu32i(Test_aBFu7c_BFu0c_BFu32i, "aBFu7c_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu32ll");
    static aBFu7c_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu32ll(Test_aBFu7c_BFu0c_BFu32ll, "aBFu7c_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu33");
    static aBFu7c_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu33(Test_aBFu7c_BFu0c_BFu33, "aBFu7c_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7c");
    static aBFu7c_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7c(Test_aBFu7c_BFu0c_BFu7c, "aBFu7c_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7i");
    static aBFu7c_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7i(Test_aBFu7c_BFu0c_BFu7i, "aBFu7c_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7ll");
    static aBFu7c_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7ll(Test_aBFu7c_BFu0c_BFu7ll, "aBFu7c_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7s");
    static aBFu7c_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7s(Test_aBFu7c_BFu0c_BFu7s, "aBFu7c_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8c");
    static aBFu7c_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8c(Test_aBFu7c_BFu0c_BFu8c, "aBFu7c_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8i");
    static aBFu7c_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8i(Test_aBFu7c_BFu0c_BFu8i, "aBFu7c_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8ll");
    static aBFu7c_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8ll(Test_aBFu7c_BFu0c_BFu8ll, "aBFu7c_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8s");
    static aBFu7c_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8s(Test_aBFu7c_BFu0c_BFu8s, "aBFu7c_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu9i");
    static aBFu7c_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu9i(Test_aBFu7c_BFu0c_BFu9i, "aBFu7c_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu9ll");
    static aBFu7c_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu9ll(Test_aBFu7c_BFu0c_BFu9ll, "aBFu7c_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu9s");
    static aBFu7c_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu9s(Test_aBFu7c_BFu0c_BFu9s, "aBFu7c_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_C()
{
  {
    init_simple_test("aBFu7c_BFu0c_C");
    static aBFu7c_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_C(Test_aBFu7c_BFu0c_C, "aBFu7c_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_D()
{
  {
    init_simple_test("aBFu7c_BFu0c_D");
    static aBFu7c_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_D(Test_aBFu7c_BFu0c_D, "aBFu7c_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_F()
{
  {
    init_simple_test("aBFu7c_BFu0c_F");
    static aBFu7c_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_F(Test_aBFu7c_BFu0c_F, "aBFu7c_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_I()
{
  {
    init_simple_test("aBFu7c_BFu0c_I");
    static aBFu7c_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_I(Test_aBFu7c_BFu0c_I, "aBFu7c_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ip");
    static aBFu7c_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ip(Test_aBFu7c_BFu0c_Ip, "aBFu7c_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_L()
{
  {
    init_simple_test("aBFu7c_BFu0c_L");
    static aBFu7c_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_L(Test_aBFu7c_BFu0c_L, "aBFu7c_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_S()
{
  {
    init_simple_test("aBFu7c_BFu0c_S");
    static aBFu7c_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_S(Test_aBFu7c_BFu0c_S, "aBFu7c_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0c_Uc");
    static aBFu7c_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Uc(Test_aBFu7c_BFu0c_Uc, "aBFu7c_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ui");
    static aBFu7c_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ui(Test_aBFu7c_BFu0c_Ui, "aBFu7c_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ul");
    static aBFu7c_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ul(Test_aBFu7c_BFu0c_Ul, "aBFu7c_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Us()
{
  {
    init_simple_test("aBFu7c_BFu0c_Us");
    static aBFu7c_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Us(Test_aBFu7c_BFu0c_Us, "aBFu7c_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0c_Vp");
    static aBFu7c_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Vp(Test_aBFu7c_BFu0c_Vp, "aBFu7c_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0i");
    static aBFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i(Test_aBFu7c_BFu0i, "aBFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0c");
    static aBFu7c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0c(Test_aBFu7c_BFu0i_BFu0c, "aBFu7c_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0i");
    static aBFu7c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0i(Test_aBFu7c_BFu0i_BFu0i, "aBFu7c_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0ll");
    static aBFu7c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0ll(Test_aBFu7c_BFu0i_BFu0ll, "aBFu7c_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0s");
    static aBFu7c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0s(Test_aBFu7c_BFu0i_BFu0s, "aBFu7c_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15i");
    static aBFu7c_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15i(Test_aBFu7c_BFu0i_BFu15i, "aBFu7c_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15ll");
    static aBFu7c_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15ll(Test_aBFu7c_BFu0i_BFu15ll, "aBFu7c_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15s");
    static aBFu7c_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15s(Test_aBFu7c_BFu0i_BFu15s, "aBFu7c_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16i");
    static aBFu7c_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16i(Test_aBFu7c_BFu0i_BFu16i, "aBFu7c_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16ll");
    static aBFu7c_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16ll(Test_aBFu7c_BFu0i_BFu16ll, "aBFu7c_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16s");
    static aBFu7c_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16s(Test_aBFu7c_BFu0i_BFu16s, "aBFu7c_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu17i");
    static aBFu7c_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu17i(Test_aBFu7c_BFu0i_BFu17i, "aBFu7c_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu17ll");
    static aBFu7c_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu17ll(Test_aBFu7c_BFu0i_BFu17ll, "aBFu7c_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1c");
    static aBFu7c_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1c(Test_aBFu7c_BFu0i_BFu1c, "aBFu7c_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1i");
    static aBFu7c_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1i(Test_aBFu7c_BFu0i_BFu1i, "aBFu7c_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1ll");
    static aBFu7c_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1ll(Test_aBFu7c_BFu0i_BFu1ll, "aBFu7c_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1s");
    static aBFu7c_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1s(Test_aBFu7c_BFu0i_BFu1s, "aBFu7c_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu31i");
    static aBFu7c_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu31i(Test_aBFu7c_BFu0i_BFu31i, "aBFu7c_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu31ll");
    static aBFu7c_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu31ll(Test_aBFu7c_BFu0i_BFu31ll, "aBFu7c_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu32i");
    static aBFu7c_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu32i(Test_aBFu7c_BFu0i_BFu32i, "aBFu7c_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu32ll");
    static aBFu7c_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu32ll(Test_aBFu7c_BFu0i_BFu32ll, "aBFu7c_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu33");
    static aBFu7c_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7c_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu33(Test_aBFu7c_BFu0i_BFu33, "aBFu7c_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7c");
    static aBFu7c_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7c(Test_aBFu7c_BFu0i_BFu7c, "aBFu7c_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7i");
    static aBFu7c_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7i(Test_aBFu7c_BFu0i_BFu7i, "aBFu7c_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7ll");
    static aBFu7c_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7ll(Test_aBFu7c_BFu0i_BFu7ll, "aBFu7c_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7s");
    static aBFu7c_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7s(Test_aBFu7c_BFu0i_BFu7s, "aBFu7c_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu8c");
    static aBFu7c_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu8c(Test_aBFu7c_BFu0i_BFu8c, "aBFu7c_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu8i");
    static aBFu7c_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu8i(Test_aBFu7c_BFu0i_BFu8i, "aBFu7c_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu8ll");
    static aBFu7c_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu8ll(Test_aBFu7c_BFu0i_BFu8ll, "aBFu7c_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu8s");
    static aBFu7c_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu8s(Test_aBFu7c_BFu0i_BFu8s, "aBFu7c_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu9i");
    static aBFu7c_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu9i(Test_aBFu7c_BFu0i_BFu9i, "aBFu7c_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu9ll");
    static aBFu7c_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu9ll(Test_aBFu7c_BFu0i_BFu9ll, "aBFu7c_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu9s");
    static aBFu7c_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu9s(Test_aBFu7c_BFu0i_BFu9s, "aBFu7c_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_C()
{
  {
    init_simple_test("aBFu7c_BFu0i_C");
    static aBFu7c_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_C(Test_aBFu7c_BFu0i_C, "aBFu7c_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_D()
{
  {
    init_simple_test("aBFu7c_BFu0i_D");
    static aBFu7c_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_D(Test_aBFu7c_BFu0i_D, "aBFu7c_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_F()
{
  {
    init_simple_test("aBFu7c_BFu0i_F");
    static aBFu7c_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_F(Test_aBFu7c_BFu0i_F, "aBFu7c_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_I()
{
  {
    init_simple_test("aBFu7c_BFu0i_I");
    static aBFu7c_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_I(Test_aBFu7c_BFu0i_I, "aBFu7c_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0i_Ip");
    static aBFu7c_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Ip(Test_aBFu7c_BFu0i_Ip, "aBFu7c_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_L()
{
  {
    init_simple_test("aBFu7c_BFu0i_L");
    static aBFu7c_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_L(Test_aBFu7c_BFu0i_L, "aBFu7c_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_S()
{
  {
    init_simple_test("aBFu7c_BFu0i_S");
    static aBFu7c_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_S(Test_aBFu7c_BFu0i_S, "aBFu7c_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0i_Uc");
    static aBFu7c_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Uc(Test_aBFu7c_BFu0i_Uc, "aBFu7c_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0i_Ui");
    static aBFu7c_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Ui(Test_aBFu7c_BFu0i_Ui, "aBFu7c_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0i_Ul");
    static aBFu7c_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Ul(Test_aBFu7c_BFu0i_Ul, "aBFu7c_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Us()
{
  {
    init_simple_test("aBFu7c_BFu0i_Us");
    static aBFu7c_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Us(Test_aBFu7c_BFu0i_Us, "aBFu7c_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0i_Vp");
    static aBFu7c_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Vp(Test_aBFu7c_BFu0i_Vp, "aBFu7c_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll");
    static aBFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll(Test_aBFu7c_BFu0ll, "aBFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0c");
    static aBFu7c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0c(Test_aBFu7c_BFu0ll_BFu0c, "aBFu7c_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0i");
    static aBFu7c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0i(Test_aBFu7c_BFu0ll_BFu0i, "aBFu7c_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0ll");
    static aBFu7c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0ll(Test_aBFu7c_BFu0ll_BFu0ll, "aBFu7c_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0s");
    static aBFu7c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0s(Test_aBFu7c_BFu0ll_BFu0s, "aBFu7c_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15i");
    static aBFu7c_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15i(Test_aBFu7c_BFu0ll_BFu15i, "aBFu7c_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15ll");
    static aBFu7c_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15ll(Test_aBFu7c_BFu0ll_BFu15ll, "aBFu7c_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15s");
    static aBFu7c_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15s(Test_aBFu7c_BFu0ll_BFu15s, "aBFu7c_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16i");
    static aBFu7c_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16i(Test_aBFu7c_BFu0ll_BFu16i, "aBFu7c_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16ll");
    static aBFu7c_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16ll(Test_aBFu7c_BFu0ll_BFu16ll, "aBFu7c_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16s");
    static aBFu7c_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16s(Test_aBFu7c_BFu0ll_BFu16s, "aBFu7c_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu17i");
    static aBFu7c_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7c_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu17i(Test_aBFu7c_BFu0ll_BFu17i, "aBFu7c_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu17ll");
    static aBFu7c_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7c_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu17ll(Test_aBFu7c_BFu0ll_BFu17ll, "aBFu7c_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu1c");
    static aBFu7c_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu1c(Test_aBFu7c_BFu0ll_BFu1c, "aBFu7c_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu1i");
    static aBFu7c_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu1i(Test_aBFu7c_BFu0ll_BFu1i, "aBFu7c_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu1ll");
    static aBFu7c_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu1ll(Test_aBFu7c_BFu0ll_BFu1ll, "aBFu7c_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu1s");
    static aBFu7c_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu1s(Test_aBFu7c_BFu0ll_BFu1s, "aBFu7c_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu31i");
    static aBFu7c_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu31i(Test_aBFu7c_BFu0ll_BFu31i, "aBFu7c_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu31ll");
    static aBFu7c_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu31ll(Test_aBFu7c_BFu0ll_BFu31ll, "aBFu7c_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu32i");
    static aBFu7c_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu32i(Test_aBFu7c_BFu0ll_BFu32i, "aBFu7c_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu32ll");
    static aBFu7c_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu32ll(Test_aBFu7c_BFu0ll_BFu32ll, "aBFu7c_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu33");
    static aBFu7c_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7c_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu33(Test_aBFu7c_BFu0ll_BFu33, "aBFu7c_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu7c");
    static aBFu7c_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu7c(Test_aBFu7c_BFu0ll_BFu7c, "aBFu7c_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu7i");
    static aBFu7c_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu7i(Test_aBFu7c_BFu0ll_BFu7i, "aBFu7c_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu7ll");
    static aBFu7c_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu7ll(Test_aBFu7c_BFu0ll_BFu7ll, "aBFu7c_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu7s");
    static aBFu7c_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu7s(Test_aBFu7c_BFu0ll_BFu7s, "aBFu7c_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu8c");
    static aBFu7c_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu8c(Test_aBFu7c_BFu0ll_BFu8c, "aBFu7c_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu8i");
    static aBFu7c_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu8i(Test_aBFu7c_BFu0ll_BFu8i, "aBFu7c_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu8ll");
    static aBFu7c_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu8ll(Test_aBFu7c_BFu0ll_BFu8ll, "aBFu7c_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu8s");
    static aBFu7c_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu8s(Test_aBFu7c_BFu0ll_BFu8s, "aBFu7c_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu9i");
    static aBFu7c_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu9i(Test_aBFu7c_BFu0ll_BFu9i, "aBFu7c_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu9ll");
    static aBFu7c_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu9ll(Test_aBFu7c_BFu0ll_BFu9ll, "aBFu7c_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu9s");
    static aBFu7c_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu9s(Test_aBFu7c_BFu0ll_BFu9s, "aBFu7c_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_C()
{
  {
    init_simple_test("aBFu7c_BFu0ll_C");
    static aBFu7c_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_C(Test_aBFu7c_BFu0ll_C, "aBFu7c_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_D()
{
  {
    init_simple_test("aBFu7c_BFu0ll_D");
    static aBFu7c_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_D(Test_aBFu7c_BFu0ll_D, "aBFu7c_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_F()
{
  {
    init_simple_test("aBFu7c_BFu0ll_F");
    static aBFu7c_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_F(Test_aBFu7c_BFu0ll_F, "aBFu7c_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_I()
{
  {
    init_simple_test("aBFu7c_BFu0ll_I");
    static aBFu7c_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_I(Test_aBFu7c_BFu0ll_I, "aBFu7c_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ip");
    static aBFu7c_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ip(Test_aBFu7c_BFu0ll_Ip, "aBFu7c_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_L()
{
  {
    init_simple_test("aBFu7c_BFu0ll_L");
    static aBFu7c_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_L(Test_aBFu7c_BFu0ll_L, "aBFu7c_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_S()
{
  {
    init_simple_test("aBFu7c_BFu0ll_S");
    static aBFu7c_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_S(Test_aBFu7c_BFu0ll_S, "aBFu7c_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Uc");
    static aBFu7c_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Uc(Test_aBFu7c_BFu0ll_Uc, "aBFu7c_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ui");
    static aBFu7c_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ui(Test_aBFu7c_BFu0ll_Ui, "aBFu7c_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ul");
    static aBFu7c_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ul(Test_aBFu7c_BFu0ll_Ul, "aBFu7c_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Us");
    static aBFu7c_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Us(Test_aBFu7c_BFu0ll_Us, "aBFu7c_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Vp");
    static aBFu7c_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Vp(Test_aBFu7c_BFu0ll_Vp, "aBFu7c_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0s");
    static aBFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s(Test_aBFu7c_BFu0s, "aBFu7c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0c");
    static aBFu7c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0c(Test_aBFu7c_BFu0s_BFu0c, "aBFu7c_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0i");
    static aBFu7c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0i(Test_aBFu7c_BFu0s_BFu0i, "aBFu7c_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0ll");
    static aBFu7c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0ll(Test_aBFu7c_BFu0s_BFu0ll, "aBFu7c_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0s");
    static aBFu7c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0s(Test_aBFu7c_BFu0s_BFu0s, "aBFu7c_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15i");
    static aBFu7c_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15i(Test_aBFu7c_BFu0s_BFu15i, "aBFu7c_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15ll");
    static aBFu7c_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15ll(Test_aBFu7c_BFu0s_BFu15ll, "aBFu7c_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15s");
    static aBFu7c_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15s(Test_aBFu7c_BFu0s_BFu15s, "aBFu7c_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16i");
    static aBFu7c_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16i(Test_aBFu7c_BFu0s_BFu16i, "aBFu7c_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16ll");
    static aBFu7c_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16ll(Test_aBFu7c_BFu0s_BFu16ll, "aBFu7c_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16s");
    static aBFu7c_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16s(Test_aBFu7c_BFu0s_BFu16s, "aBFu7c_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu17i");
    static aBFu7c_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu17i(Test_aBFu7c_BFu0s_BFu17i, "aBFu7c_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu17ll");
    static aBFu7c_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu17ll(Test_aBFu7c_BFu0s_BFu17ll, "aBFu7c_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1c");
    static aBFu7c_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1c(Test_aBFu7c_BFu0s_BFu1c, "aBFu7c_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1i");
    static aBFu7c_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1i(Test_aBFu7c_BFu0s_BFu1i, "aBFu7c_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1ll");
    static aBFu7c_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1ll(Test_aBFu7c_BFu0s_BFu1ll, "aBFu7c_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1s");
    static aBFu7c_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1s(Test_aBFu7c_BFu0s_BFu1s, "aBFu7c_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu31i");
    static aBFu7c_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu31i(Test_aBFu7c_BFu0s_BFu31i, "aBFu7c_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu31ll");
    static aBFu7c_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu31ll(Test_aBFu7c_BFu0s_BFu31ll, "aBFu7c_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu32i");
    static aBFu7c_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu32i(Test_aBFu7c_BFu0s_BFu32i, "aBFu7c_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu32ll");
    static aBFu7c_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu32ll(Test_aBFu7c_BFu0s_BFu32ll, "aBFu7c_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu33");
    static aBFu7c_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu33(Test_aBFu7c_BFu0s_BFu33, "aBFu7c_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7c");
    static aBFu7c_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7c(Test_aBFu7c_BFu0s_BFu7c, "aBFu7c_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7i");
    static aBFu7c_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7i(Test_aBFu7c_BFu0s_BFu7i, "aBFu7c_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7ll");
    static aBFu7c_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7ll(Test_aBFu7c_BFu0s_BFu7ll, "aBFu7c_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7s");
    static aBFu7c_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7s(Test_aBFu7c_BFu0s_BFu7s, "aBFu7c_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu8c");
    static aBFu7c_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu8c(Test_aBFu7c_BFu0s_BFu8c, "aBFu7c_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu8i");
    static aBFu7c_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu8i(Test_aBFu7c_BFu0s_BFu8i, "aBFu7c_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu8ll");
    static aBFu7c_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu8ll(Test_aBFu7c_BFu0s_BFu8ll, "aBFu7c_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu8s");
    static aBFu7c_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu8s(Test_aBFu7c_BFu0s_BFu8s, "aBFu7c_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu9i");
    static aBFu7c_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu9i(Test_aBFu7c_BFu0s_BFu9i, "aBFu7c_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu9ll");
    static aBFu7c_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu9ll(Test_aBFu7c_BFu0s_BFu9ll, "aBFu7c_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu9s");
    static aBFu7c_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7c_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu9s(Test_aBFu7c_BFu0s_BFu9s, "aBFu7c_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_C()
{
  {
    init_simple_test("aBFu7c_BFu0s_C");
    static aBFu7c_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_C(Test_aBFu7c_BFu0s_C, "aBFu7c_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_D()
{
  {
    init_simple_test("aBFu7c_BFu0s_D");
    static aBFu7c_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_D(Test_aBFu7c_BFu0s_D, "aBFu7c_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_F()
{
  {
    init_simple_test("aBFu7c_BFu0s_F");
    static aBFu7c_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_F(Test_aBFu7c_BFu0s_F, "aBFu7c_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_I()
{
  {
    init_simple_test("aBFu7c_BFu0s_I");
    static aBFu7c_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_I(Test_aBFu7c_BFu0s_I, "aBFu7c_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0s_Ip");
    static aBFu7c_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Ip(Test_aBFu7c_BFu0s_Ip, "aBFu7c_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_L()
{
  {
    init_simple_test("aBFu7c_BFu0s_L");
    static aBFu7c_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_L(Test_aBFu7c_BFu0s_L, "aBFu7c_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_S()
{
  {
    init_simple_test("aBFu7c_BFu0s_S");
    static aBFu7c_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_S(Test_aBFu7c_BFu0s_S, "aBFu7c_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0s_Uc");
    static aBFu7c_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Uc(Test_aBFu7c_BFu0s_Uc, "aBFu7c_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0s_Ui");
    static aBFu7c_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Ui(Test_aBFu7c_BFu0s_Ui, "aBFu7c_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0s_Ul");
    static aBFu7c_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Ul(Test_aBFu7c_BFu0s_Ul, "aBFu7c_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Us()
{
  {
    init_simple_test("aBFu7c_BFu0s_Us");
    static aBFu7c_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Us(Test_aBFu7c_BFu0s_Us, "aBFu7c_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0s_Vp");
    static aBFu7c_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Vp(Test_aBFu7c_BFu0s_Vp, "aBFu7c_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0c");
    static aBFu7c_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0c(Test_aBFu7c_BFu15i_BFu0c, "aBFu7c_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0i");
    static aBFu7c_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0i(Test_aBFu7c_BFu15i_BFu0i, "aBFu7c_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0ll");
    static aBFu7c_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0ll(Test_aBFu7c_BFu15i_BFu0ll, "aBFu7c_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0s");
    static aBFu7c_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0s(Test_aBFu7c_BFu15i_BFu0s, "aBFu7c_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0c");
    static aBFu7c_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0c(Test_aBFu7c_BFu15ll_BFu0c, "aBFu7c_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0i");
    static aBFu7c_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0i(Test_aBFu7c_BFu15ll_BFu0i, "aBFu7c_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0ll");
    static aBFu7c_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0ll(Test_aBFu7c_BFu15ll_BFu0ll, "aBFu7c_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0s");
    static aBFu7c_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0s(Test_aBFu7c_BFu15ll_BFu0s, "aBFu7c_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0c");
    static aBFu7c_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0c(Test_aBFu7c_BFu15s_BFu0c, "aBFu7c_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0i");
    static aBFu7c_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0i(Test_aBFu7c_BFu15s_BFu0i, "aBFu7c_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0ll");
    static aBFu7c_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0ll(Test_aBFu7c_BFu15s_BFu0ll, "aBFu7c_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0s");
    static aBFu7c_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0s(Test_aBFu7c_BFu15s_BFu0s, "aBFu7c_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0c");
    static aBFu7c_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0c(Test_aBFu7c_BFu16i_BFu0c, "aBFu7c_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0i");
    static aBFu7c_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0i(Test_aBFu7c_BFu16i_BFu0i, "aBFu7c_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0ll");
    static aBFu7c_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0ll(Test_aBFu7c_BFu16i_BFu0ll, "aBFu7c_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0s");
    static aBFu7c_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0s(Test_aBFu7c_BFu16i_BFu0s, "aBFu7c_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0c");
    static aBFu7c_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0c(Test_aBFu7c_BFu16ll_BFu0c, "aBFu7c_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0i");
    static aBFu7c_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0i(Test_aBFu7c_BFu16ll_BFu0i, "aBFu7c_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0ll");
    static aBFu7c_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0ll(Test_aBFu7c_BFu16ll_BFu0ll, "aBFu7c_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0s");
    static aBFu7c_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0s(Test_aBFu7c_BFu16ll_BFu0s, "aBFu7c_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0c");
    static aBFu7c_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0c(Test_aBFu7c_BFu16s_BFu0c, "aBFu7c_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0i");
    static aBFu7c_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0i(Test_aBFu7c_BFu16s_BFu0i, "aBFu7c_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0ll");
    static aBFu7c_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0ll(Test_aBFu7c_BFu16s_BFu0ll, "aBFu7c_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0s");
    static aBFu7c_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0s(Test_aBFu7c_BFu16s_BFu0s, "aBFu7c_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0c");
    static aBFu7c_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0c(Test_aBFu7c_BFu17i_BFu0c, "aBFu7c_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0i");
    static aBFu7c_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0i(Test_aBFu7c_BFu17i_BFu0i, "aBFu7c_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0ll");
    static aBFu7c_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0ll(Test_aBFu7c_BFu17i_BFu0ll, "aBFu7c_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0s");
    static aBFu7c_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0s(Test_aBFu7c_BFu17i_BFu0s, "aBFu7c_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0c");
    static aBFu7c_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0c(Test_aBFu7c_BFu17ll_BFu0c, "aBFu7c_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0i");
    static aBFu7c_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0i(Test_aBFu7c_BFu17ll_BFu0i, "aBFu7c_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0ll");
    static aBFu7c_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0ll(Test_aBFu7c_BFu17ll_BFu0ll, "aBFu7c_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0s");
    static aBFu7c_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0s(Test_aBFu7c_BFu17ll_BFu0s, "aBFu7c_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0c");
    static aBFu7c_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0c(Test_aBFu7c_BFu1c_BFu0c, "aBFu7c_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0i");
    static aBFu7c_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0i(Test_aBFu7c_BFu1c_BFu0i, "aBFu7c_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0ll");
    static aBFu7c_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0ll(Test_aBFu7c_BFu1c_BFu0ll, "aBFu7c_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0s");
    static aBFu7c_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0s(Test_aBFu7c_BFu1c_BFu0s, "aBFu7c_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0c");
    static aBFu7c_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0c(Test_aBFu7c_BFu1i_BFu0c, "aBFu7c_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0i");
    static aBFu7c_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0i(Test_aBFu7c_BFu1i_BFu0i, "aBFu7c_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0ll");
    static aBFu7c_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0ll(Test_aBFu7c_BFu1i_BFu0ll, "aBFu7c_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0s");
    static aBFu7c_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0s(Test_aBFu7c_BFu1i_BFu0s, "aBFu7c_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0c");
    static aBFu7c_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0c(Test_aBFu7c_BFu1ll_BFu0c, "aBFu7c_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0i");
    static aBFu7c_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0i(Test_aBFu7c_BFu1ll_BFu0i, "aBFu7c_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0ll");
    static aBFu7c_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0ll(Test_aBFu7c_BFu1ll_BFu0ll, "aBFu7c_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0s");
    static aBFu7c_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0s(Test_aBFu7c_BFu1ll_BFu0s, "aBFu7c_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0c");
    static aBFu7c_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0c(Test_aBFu7c_BFu1s_BFu0c, "aBFu7c_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0i");
    static aBFu7c_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0i(Test_aBFu7c_BFu1s_BFu0i, "aBFu7c_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0ll");
    static aBFu7c_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0ll(Test_aBFu7c_BFu1s_BFu0ll, "aBFu7c_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0s");
    static aBFu7c_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0s(Test_aBFu7c_BFu1s_BFu0s, "aBFu7c_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0c");
    static aBFu7c_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0c(Test_aBFu7c_BFu31i_BFu0c, "aBFu7c_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0i");
    static aBFu7c_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0i(Test_aBFu7c_BFu31i_BFu0i, "aBFu7c_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0ll");
    static aBFu7c_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0ll(Test_aBFu7c_BFu31i_BFu0ll, "aBFu7c_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0s");
    static aBFu7c_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0s(Test_aBFu7c_BFu31i_BFu0s, "aBFu7c_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0c");
    static aBFu7c_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0c(Test_aBFu7c_BFu31ll_BFu0c, "aBFu7c_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0i");
    static aBFu7c_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0i(Test_aBFu7c_BFu31ll_BFu0i, "aBFu7c_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0ll");
    static aBFu7c_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0ll(Test_aBFu7c_BFu31ll_BFu0ll, "aBFu7c_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0s");
    static aBFu7c_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0s(Test_aBFu7c_BFu31ll_BFu0s, "aBFu7c_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0c");
    static aBFu7c_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0c(Test_aBFu7c_BFu32i_BFu0c, "aBFu7c_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0i");
    static aBFu7c_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0i(Test_aBFu7c_BFu32i_BFu0i, "aBFu7c_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0ll");
    static aBFu7c_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0ll(Test_aBFu7c_BFu32i_BFu0ll, "aBFu7c_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0s");
    static aBFu7c_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0s(Test_aBFu7c_BFu32i_BFu0s, "aBFu7c_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0c");
    static aBFu7c_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0c(Test_aBFu7c_BFu32ll_BFu0c, "aBFu7c_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0i");
    static aBFu7c_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0i(Test_aBFu7c_BFu32ll_BFu0i, "aBFu7c_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0ll");
    static aBFu7c_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0ll(Test_aBFu7c_BFu32ll_BFu0ll, "aBFu7c_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0s");
    static aBFu7c_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0s(Test_aBFu7c_BFu32ll_BFu0s, "aBFu7c_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0c");
    static aBFu7c_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0c(Test_aBFu7c_BFu33_BFu0c, "aBFu7c_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0i");
    static aBFu7c_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0i(Test_aBFu7c_BFu33_BFu0i, "aBFu7c_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0ll");
    static aBFu7c_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0ll(Test_aBFu7c_BFu33_BFu0ll, "aBFu7c_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0s");
    static aBFu7c_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0s(Test_aBFu7c_BFu33_BFu0s, "aBFu7c_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0c");
    static aBFu7c_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0c(Test_aBFu7c_BFu7c_BFu0c, "aBFu7c_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0i");
    static aBFu7c_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0i(Test_aBFu7c_BFu7c_BFu0i, "aBFu7c_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0ll");
    static aBFu7c_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0ll(Test_aBFu7c_BFu7c_BFu0ll, "aBFu7c_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0s");
    static aBFu7c_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0s(Test_aBFu7c_BFu7c_BFu0s, "aBFu7c_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0c");
    static aBFu7c_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0c(Test_aBFu7c_BFu7i_BFu0c, "aBFu7c_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0i");
    static aBFu7c_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0i(Test_aBFu7c_BFu7i_BFu0i, "aBFu7c_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0ll");
    static aBFu7c_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0ll(Test_aBFu7c_BFu7i_BFu0ll, "aBFu7c_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0s");
    static aBFu7c_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0s(Test_aBFu7c_BFu7i_BFu0s, "aBFu7c_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0c");
    static aBFu7c_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0c(Test_aBFu7c_BFu7ll_BFu0c, "aBFu7c_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0i");
    static aBFu7c_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0i(Test_aBFu7c_BFu7ll_BFu0i, "aBFu7c_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0ll");
    static aBFu7c_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0ll(Test_aBFu7c_BFu7ll_BFu0ll, "aBFu7c_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0s");
    static aBFu7c_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0s(Test_aBFu7c_BFu7ll_BFu0s, "aBFu7c_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0c");
    static aBFu7c_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0c(Test_aBFu7c_BFu7s_BFu0c, "aBFu7c_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0i");
    static aBFu7c_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0i(Test_aBFu7c_BFu7s_BFu0i, "aBFu7c_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0ll");
    static aBFu7c_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0ll(Test_aBFu7c_BFu7s_BFu0ll, "aBFu7c_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0s");
    static aBFu7c_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0s(Test_aBFu7c_BFu7s_BFu0s, "aBFu7c_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0c");
    static aBFu7c_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0c(Test_aBFu7c_BFu8c_BFu0c, "aBFu7c_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0i");
    static aBFu7c_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0i(Test_aBFu7c_BFu8c_BFu0i, "aBFu7c_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0ll");
    static aBFu7c_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0ll(Test_aBFu7c_BFu8c_BFu0ll, "aBFu7c_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0s");
    static aBFu7c_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0s(Test_aBFu7c_BFu8c_BFu0s, "aBFu7c_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0c");
    static aBFu7c_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0c(Test_aBFu7c_BFu8i_BFu0c, "aBFu7c_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0i");
    static aBFu7c_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0i(Test_aBFu7c_BFu8i_BFu0i, "aBFu7c_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0ll");
    static aBFu7c_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0ll(Test_aBFu7c_BFu8i_BFu0ll, "aBFu7c_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0s");
    static aBFu7c_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0s(Test_aBFu7c_BFu8i_BFu0s, "aBFu7c_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0c");
    static aBFu7c_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0c(Test_aBFu7c_BFu8ll_BFu0c, "aBFu7c_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0i");
    static aBFu7c_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0i(Test_aBFu7c_BFu8ll_BFu0i, "aBFu7c_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0ll");
    static aBFu7c_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0ll(Test_aBFu7c_BFu8ll_BFu0ll, "aBFu7c_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0s");
    static aBFu7c_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0s(Test_aBFu7c_BFu8ll_BFu0s, "aBFu7c_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0c");
    static aBFu7c_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0c(Test_aBFu7c_BFu8s_BFu0c, "aBFu7c_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0i");
    static aBFu7c_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0i(Test_aBFu7c_BFu8s_BFu0i, "aBFu7c_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0ll");
    static aBFu7c_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0ll(Test_aBFu7c_BFu8s_BFu0ll, "aBFu7c_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0s");
    static aBFu7c_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0s(Test_aBFu7c_BFu8s_BFu0s, "aBFu7c_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu9i_BFu0c");
    static aBFu7c_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9i_BFu0c(Test_aBFu7c_BFu9i_BFu0c, "aBFu7c_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu9i_BFu0i");
    static aBFu7c_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9i_BFu0i(Test_aBFu7c_BFu9i_BFu0i, "aBFu7c_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu9i_BFu0ll");
    static aBFu7c_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9i_BFu0ll(Test_aBFu7c_BFu9i_BFu0ll, "aBFu7c_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu9i_BFu0s");
    static aBFu7c_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9i_BFu0s(Test_aBFu7c_BFu9i_BFu0s, "aBFu7c_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu9ll_BFu0c");
    static aBFu7c_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9ll_BFu0c(Test_aBFu7c_BFu9ll_BFu0c, "aBFu7c_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu9ll_BFu0i");
    static aBFu7c_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9ll_BFu0i(Test_aBFu7c_BFu9ll_BFu0i, "aBFu7c_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu9ll_BFu0ll");
    static aBFu7c_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9ll_BFu0ll(Test_aBFu7c_BFu9ll_BFu0ll, "aBFu7c_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu9ll_BFu0s");
    static aBFu7c_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9ll_BFu0s(Test_aBFu7c_BFu9ll_BFu0s, "aBFu7c_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu9s_BFu0c");
    static aBFu7c_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9s_BFu0c(Test_aBFu7c_BFu9s_BFu0c, "aBFu7c_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu9s_BFu0i");
    static aBFu7c_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9s_BFu0i(Test_aBFu7c_BFu9s_BFu0i, "aBFu7c_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu9s_BFu0ll");
    static aBFu7c_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9s_BFu0ll(Test_aBFu7c_BFu9s_BFu0ll, "aBFu7c_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu9s_BFu0s");
    static aBFu7c_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7c_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu9s_BFu0s(Test_aBFu7c_BFu9s_BFu0s, "aBFu7c_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0c()
{
  {
    init_simple_test("aBFu7c_C_BFu0c");
    static aBFu7c_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0c(Test_aBFu7c_C_BFu0c, "aBFu7c_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0i()
{
  {
    init_simple_test("aBFu7c_C_BFu0i");
    static aBFu7c_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0i(Test_aBFu7c_C_BFu0i, "aBFu7c_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0ll()
{
  {
    init_simple_test("aBFu7c_C_BFu0ll");
    static aBFu7c_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0ll(Test_aBFu7c_C_BFu0ll, "aBFu7c_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0s()
{
  {
    init_simple_test("aBFu7c_C_BFu0s");
    static aBFu7c_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0s(Test_aBFu7c_C_BFu0s, "aBFu7c_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0c()
{
  {
    init_simple_test("aBFu7c_D_BFu0c");
    static aBFu7c_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0c(Test_aBFu7c_D_BFu0c, "aBFu7c_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0i()
{
  {
    init_simple_test("aBFu7c_D_BFu0i");
    static aBFu7c_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0i(Test_aBFu7c_D_BFu0i, "aBFu7c_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0ll()
{
  {
    init_simple_test("aBFu7c_D_BFu0ll");
    static aBFu7c_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0ll(Test_aBFu7c_D_BFu0ll, "aBFu7c_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0s()
{
  {
    init_simple_test("aBFu7c_D_BFu0s");
    static aBFu7c_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0s(Test_aBFu7c_D_BFu0s, "aBFu7c_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_F_BFu0c()
{
  {
    init_simple_test("aBFu7c_F_BFu0c");
    static aBFu7c_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_F_BFu0c(Test_aBFu7c_F_BFu0c, "aBFu7c_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_F_BFu0i()
{
  {
    init_simple_test("aBFu7c_F_BFu0i");
    static aBFu7c_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_F_BFu0i(Test_aBFu7c_F_BFu0i, "aBFu7c_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_F_BFu0ll()
{
  {
    init_simple_test("aBFu7c_F_BFu0ll");
    static aBFu7c_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_F_BFu0ll(Test_aBFu7c_F_BFu0ll, "aBFu7c_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_F_BFu0s()
{
  {
    init_simple_test("aBFu7c_F_BFu0s");
    static aBFu7c_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_F_BFu0s(Test_aBFu7c_F_BFu0s, "aBFu7c_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_I_BFu0c()
{
  {
    init_simple_test("aBFu7c_I_BFu0c");
    static aBFu7c_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_I_BFu0c(Test_aBFu7c_I_BFu0c, "aBFu7c_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_I_BFu0i()
{
  {
    init_simple_test("aBFu7c_I_BFu0i");
    static aBFu7c_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_I_BFu0i(Test_aBFu7c_I_BFu0i, "aBFu7c_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_I_BFu0ll()
{
  {
    init_simple_test("aBFu7c_I_BFu0ll");
    static aBFu7c_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_I_BFu0ll(Test_aBFu7c_I_BFu0ll, "aBFu7c_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_I_BFu0s()
{
  {
    init_simple_test("aBFu7c_I_BFu0s");
    static aBFu7c_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_I_BFu0s(Test_aBFu7c_I_BFu0s, "aBFu7c_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ip_BFu0c");
    static aBFu7c_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ip_BFu0c(Test_aBFu7c_Ip_BFu0c, "aBFu7c_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7c_Ip_BFu0i");
    static aBFu7c_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ip_BFu0i(Test_aBFu7c_Ip_BFu0i, "aBFu7c_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Ip_BFu0ll");
    static aBFu7c_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ip_BFu0ll(Test_aBFu7c_Ip_BFu0ll, "aBFu7c_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7c_Ip_BFu0s");
    static aBFu7c_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ip_BFu0s(Test_aBFu7c_Ip_BFu0s, "aBFu7c_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0c()
{
  {
    init_simple_test("aBFu7c_L_BFu0c");
    static aBFu7c_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0c(Test_aBFu7c_L_BFu0c, "aBFu7c_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0i()
{
  {
    init_simple_test("aBFu7c_L_BFu0i");
    static aBFu7c_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0i(Test_aBFu7c_L_BFu0i, "aBFu7c_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0ll()
{
  {
    init_simple_test("aBFu7c_L_BFu0ll");
    static aBFu7c_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0ll(Test_aBFu7c_L_BFu0ll, "aBFu7c_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0s()
{
  {
    init_simple_test("aBFu7c_L_BFu0s");
    static aBFu7c_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0s(Test_aBFu7c_L_BFu0s, "aBFu7c_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0c()
{
  {
    init_simple_test("aBFu7c_S_BFu0c");
    static aBFu7c_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0c(Test_aBFu7c_S_BFu0c, "aBFu7c_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0i()
{
  {
    init_simple_test("aBFu7c_S_BFu0i");
    static aBFu7c_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0i(Test_aBFu7c_S_BFu0i, "aBFu7c_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0ll()
{
  {
    init_simple_test("aBFu7c_S_BFu0ll");
    static aBFu7c_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0ll(Test_aBFu7c_S_BFu0ll, "aBFu7c_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0s()
{
  {
    init_simple_test("aBFu7c_S_BFu0s");
    static aBFu7c_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0s(Test_aBFu7c_S_BFu0s, "aBFu7c_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0c");
    static aBFu7c_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0c(Test_aBFu7c_Uc_BFu0c, "aBFu7c_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0i");
    static aBFu7c_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0i(Test_aBFu7c_Uc_BFu0i, "aBFu7c_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0ll");
    static aBFu7c_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0ll(Test_aBFu7c_Uc_BFu0ll, "aBFu7c_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0s");
    static aBFu7c_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0s(Test_aBFu7c_Uc_BFu0s, "aBFu7c_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ui_BFu0c");
    static aBFu7c_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ui_BFu0c(Test_aBFu7c_Ui_BFu0c, "aBFu7c_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7c_Ui_BFu0i");
    static aBFu7c_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ui_BFu0i(Test_aBFu7c_Ui_BFu0i, "aBFu7c_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Ui_BFu0ll");
    static aBFu7c_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ui_BFu0ll(Test_aBFu7c_Ui_BFu0ll, "aBFu7c_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7c_Ui_BFu0s");
    static aBFu7c_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ui_BFu0s(Test_aBFu7c_Ui_BFu0s, "aBFu7c_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0c");
    static aBFu7c_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0c(Test_aBFu7c_Ul_BFu0c, "aBFu7c_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0i");
    static aBFu7c_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0i(Test_aBFu7c_Ul_BFu0i, "aBFu7c_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0ll");
    static aBFu7c_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0ll(Test_aBFu7c_Ul_BFu0ll, "aBFu7c_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0s");
    static aBFu7c_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0s(Test_aBFu7c_Ul_BFu0s, "aBFu7c_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0c()
{
  {
    init_simple_test("aBFu7c_Us_BFu0c");
    static aBFu7c_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0c(Test_aBFu7c_Us_BFu0c, "aBFu7c_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0i()
{
  {
    init_simple_test("aBFu7c_Us_BFu0i");
    static aBFu7c_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0i(Test_aBFu7c_Us_BFu0i, "aBFu7c_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Us_BFu0ll");
    static aBFu7c_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0ll(Test_aBFu7c_Us_BFu0ll, "aBFu7c_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0s()
{
  {
    init_simple_test("aBFu7c_Us_BFu0s");
    static aBFu7c_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0s(Test_aBFu7c_Us_BFu0s, "aBFu7c_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7c_Vp_BFu0c");
    static aBFu7c_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Vp_BFu0c(Test_aBFu7c_Vp_BFu0c, "aBFu7c_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7c_Vp_BFu0i");
    static aBFu7c_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Vp_BFu0i(Test_aBFu7c_Vp_BFu0i, "aBFu7c_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Vp_BFu0ll");
    static aBFu7c_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Vp_BFu0ll(Test_aBFu7c_Vp_BFu0ll, "aBFu7c_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7c_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7c_Vp_BFu0s");
    static aBFu7c_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Vp_BFu0s(Test_aBFu7c_Vp_BFu0s, "aBFu7c_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0c");
    static aBFu7i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c(Test_aBFu7i_BFu0c, "aBFu7i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0c");
    static aBFu7i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0c(Test_aBFu7i_BFu0c_BFu0c, "aBFu7i_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0i");
    static aBFu7i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0i(Test_aBFu7i_BFu0c_BFu0i, "aBFu7i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0ll");
    static aBFu7i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0ll(Test_aBFu7i_BFu0c_BFu0ll, "aBFu7i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0s");
    static aBFu7i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0s(Test_aBFu7i_BFu0c_BFu0s, "aBFu7i_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15i");
    static aBFu7i_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15i(Test_aBFu7i_BFu0c_BFu15i, "aBFu7i_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15ll");
    static aBFu7i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15ll(Test_aBFu7i_BFu0c_BFu15ll, "aBFu7i_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15s");
    static aBFu7i_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15s(Test_aBFu7i_BFu0c_BFu15s, "aBFu7i_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16i");
    static aBFu7i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16i(Test_aBFu7i_BFu0c_BFu16i, "aBFu7i_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16ll");
    static aBFu7i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16ll(Test_aBFu7i_BFu0c_BFu16ll, "aBFu7i_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16s");
    static aBFu7i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16s(Test_aBFu7i_BFu0c_BFu16s, "aBFu7i_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu17i");
    static aBFu7i_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu17i(Test_aBFu7i_BFu0c_BFu17i, "aBFu7i_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu17ll");
    static aBFu7i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu17ll(Test_aBFu7i_BFu0c_BFu17ll, "aBFu7i_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1c");
    static aBFu7i_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1c(Test_aBFu7i_BFu0c_BFu1c, "aBFu7i_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1i");
    static aBFu7i_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1i(Test_aBFu7i_BFu0c_BFu1i, "aBFu7i_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1ll");
    static aBFu7i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1ll(Test_aBFu7i_BFu0c_BFu1ll, "aBFu7i_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1s");
    static aBFu7i_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1s(Test_aBFu7i_BFu0c_BFu1s, "aBFu7i_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu31i");
    static aBFu7i_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu31i(Test_aBFu7i_BFu0c_BFu31i, "aBFu7i_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu31ll");
    static aBFu7i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu31ll(Test_aBFu7i_BFu0c_BFu31ll, "aBFu7i_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu32i");
    static aBFu7i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu32i(Test_aBFu7i_BFu0c_BFu32i, "aBFu7i_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu32ll");
    static aBFu7i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu32ll(Test_aBFu7i_BFu0c_BFu32ll, "aBFu7i_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu33");
    static aBFu7i_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu33(Test_aBFu7i_BFu0c_BFu33, "aBFu7i_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7c");
    static aBFu7i_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7c(Test_aBFu7i_BFu0c_BFu7c, "aBFu7i_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7i");
    static aBFu7i_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7i(Test_aBFu7i_BFu0c_BFu7i, "aBFu7i_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7ll");
    static aBFu7i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7ll(Test_aBFu7i_BFu0c_BFu7ll, "aBFu7i_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7s");
    static aBFu7i_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7s(Test_aBFu7i_BFu0c_BFu7s, "aBFu7i_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8c");
    static aBFu7i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8c(Test_aBFu7i_BFu0c_BFu8c, "aBFu7i_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8i");
    static aBFu7i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8i(Test_aBFu7i_BFu0c_BFu8i, "aBFu7i_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8ll");
    static aBFu7i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8ll(Test_aBFu7i_BFu0c_BFu8ll, "aBFu7i_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8s");
    static aBFu7i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8s(Test_aBFu7i_BFu0c_BFu8s, "aBFu7i_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9i");
    static aBFu7i_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9i(Test_aBFu7i_BFu0c_BFu9i, "aBFu7i_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9ll");
    static aBFu7i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9ll(Test_aBFu7i_BFu0c_BFu9ll, "aBFu7i_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9s");
    static aBFu7i_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9s(Test_aBFu7i_BFu0c_BFu9s, "aBFu7i_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_C()
{
  {
    init_simple_test("aBFu7i_BFu0c_C");
    static aBFu7i_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_C(Test_aBFu7i_BFu0c_C, "aBFu7i_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_D()
{
  {
    init_simple_test("aBFu7i_BFu0c_D");
    static aBFu7i_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_D(Test_aBFu7i_BFu0c_D, "aBFu7i_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_F()
{
  {
    init_simple_test("aBFu7i_BFu0c_F");
    static aBFu7i_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_F(Test_aBFu7i_BFu0c_F, "aBFu7i_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_I()
{
  {
    init_simple_test("aBFu7i_BFu0c_I");
    static aBFu7i_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_I(Test_aBFu7i_BFu0c_I, "aBFu7i_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ip");
    static aBFu7i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ip(Test_aBFu7i_BFu0c_Ip, "aBFu7i_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_L()
{
  {
    init_simple_test("aBFu7i_BFu0c_L");
    static aBFu7i_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_L(Test_aBFu7i_BFu0c_L, "aBFu7i_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_S()
{
  {
    init_simple_test("aBFu7i_BFu0c_S");
    static aBFu7i_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_S(Test_aBFu7i_BFu0c_S, "aBFu7i_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0c_Uc");
    static aBFu7i_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Uc(Test_aBFu7i_BFu0c_Uc, "aBFu7i_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ui");
    static aBFu7i_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ui(Test_aBFu7i_BFu0c_Ui, "aBFu7i_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ul");
    static aBFu7i_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ul(Test_aBFu7i_BFu0c_Ul, "aBFu7i_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Us()
{
  {
    init_simple_test("aBFu7i_BFu0c_Us");
    static aBFu7i_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Us(Test_aBFu7i_BFu0c_Us, "aBFu7i_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0c_Vp");
    static aBFu7i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Vp(Test_aBFu7i_BFu0c_Vp, "aBFu7i_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0i");
    static aBFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i(Test_aBFu7i_BFu0i, "aBFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0c");
    static aBFu7i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0c(Test_aBFu7i_BFu0i_BFu0c, "aBFu7i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0i");
    static aBFu7i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0i(Test_aBFu7i_BFu0i_BFu0i, "aBFu7i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0ll");
    static aBFu7i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0ll(Test_aBFu7i_BFu0i_BFu0ll, "aBFu7i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0s");
    static aBFu7i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0s(Test_aBFu7i_BFu0i_BFu0s, "aBFu7i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15i");
    static aBFu7i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15i(Test_aBFu7i_BFu0i_BFu15i, "aBFu7i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15ll");
    static aBFu7i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15ll(Test_aBFu7i_BFu0i_BFu15ll, "aBFu7i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15s");
    static aBFu7i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15s(Test_aBFu7i_BFu0i_BFu15s, "aBFu7i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16i");
    static aBFu7i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16i(Test_aBFu7i_BFu0i_BFu16i, "aBFu7i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16ll");
    static aBFu7i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16ll(Test_aBFu7i_BFu0i_BFu16ll, "aBFu7i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16s");
    static aBFu7i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16s(Test_aBFu7i_BFu0i_BFu16s, "aBFu7i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu17i");
    static aBFu7i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu17i(Test_aBFu7i_BFu0i_BFu17i, "aBFu7i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu17ll");
    static aBFu7i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu17ll(Test_aBFu7i_BFu0i_BFu17ll, "aBFu7i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1c");
    static aBFu7i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1c(Test_aBFu7i_BFu0i_BFu1c, "aBFu7i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1i");
    static aBFu7i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1i(Test_aBFu7i_BFu0i_BFu1i, "aBFu7i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1ll");
    static aBFu7i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1ll(Test_aBFu7i_BFu0i_BFu1ll, "aBFu7i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1s");
    static aBFu7i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1s(Test_aBFu7i_BFu0i_BFu1s, "aBFu7i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu31i");
    static aBFu7i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu31i(Test_aBFu7i_BFu0i_BFu31i, "aBFu7i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu31ll");
    static aBFu7i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu31ll(Test_aBFu7i_BFu0i_BFu31ll, "aBFu7i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu32i");
    static aBFu7i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu32i(Test_aBFu7i_BFu0i_BFu32i, "aBFu7i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu32ll");
    static aBFu7i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu32ll(Test_aBFu7i_BFu0i_BFu32ll, "aBFu7i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu33");
    static aBFu7i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7i_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu33(Test_aBFu7i_BFu0i_BFu33, "aBFu7i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7c");
    static aBFu7i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7c(Test_aBFu7i_BFu0i_BFu7c, "aBFu7i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7i");
    static aBFu7i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7i(Test_aBFu7i_BFu0i_BFu7i, "aBFu7i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7ll");
    static aBFu7i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7ll(Test_aBFu7i_BFu0i_BFu7ll, "aBFu7i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7s");
    static aBFu7i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7s(Test_aBFu7i_BFu0i_BFu7s, "aBFu7i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8c");
    static aBFu7i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8c(Test_aBFu7i_BFu0i_BFu8c, "aBFu7i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8i");
    static aBFu7i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8i(Test_aBFu7i_BFu0i_BFu8i, "aBFu7i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8ll");
    static aBFu7i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8ll(Test_aBFu7i_BFu0i_BFu8ll, "aBFu7i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8s");
    static aBFu7i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8s(Test_aBFu7i_BFu0i_BFu8s, "aBFu7i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9i");
    static aBFu7i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9i(Test_aBFu7i_BFu0i_BFu9i, "aBFu7i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9ll");
    static aBFu7i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9ll(Test_aBFu7i_BFu0i_BFu9ll, "aBFu7i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9s");
    static aBFu7i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9s(Test_aBFu7i_BFu0i_BFu9s, "aBFu7i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_C()
{
  {
    init_simple_test("aBFu7i_BFu0i_C");
    static aBFu7i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_C(Test_aBFu7i_BFu0i_C, "aBFu7i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_D()
{
  {
    init_simple_test("aBFu7i_BFu0i_D");
    static aBFu7i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_D(Test_aBFu7i_BFu0i_D, "aBFu7i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_F()
{
  {
    init_simple_test("aBFu7i_BFu0i_F");
    static aBFu7i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_F(Test_aBFu7i_BFu0i_F, "aBFu7i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_I()
{
  {
    init_simple_test("aBFu7i_BFu0i_I");
    static aBFu7i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_I(Test_aBFu7i_BFu0i_I, "aBFu7i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ip");
    static aBFu7i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ip(Test_aBFu7i_BFu0i_Ip, "aBFu7i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_L()
{
  {
    init_simple_test("aBFu7i_BFu0i_L");
    static aBFu7i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_L(Test_aBFu7i_BFu0i_L, "aBFu7i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_S()
{
  {
    init_simple_test("aBFu7i_BFu0i_S");
    static aBFu7i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_S(Test_aBFu7i_BFu0i_S, "aBFu7i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0i_Uc");
    static aBFu7i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Uc(Test_aBFu7i_BFu0i_Uc, "aBFu7i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ui");
    static aBFu7i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ui(Test_aBFu7i_BFu0i_Ui, "aBFu7i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ul");
    static aBFu7i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ul(Test_aBFu7i_BFu0i_Ul, "aBFu7i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Us()
{
  {
    init_simple_test("aBFu7i_BFu0i_Us");
    static aBFu7i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Us(Test_aBFu7i_BFu0i_Us, "aBFu7i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0i_Vp");
    static aBFu7i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Vp(Test_aBFu7i_BFu0i_Vp, "aBFu7i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll");
    static aBFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll(Test_aBFu7i_BFu0ll, "aBFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0c");
    static aBFu7i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0c(Test_aBFu7i_BFu0ll_BFu0c, "aBFu7i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0i");
    static aBFu7i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0i(Test_aBFu7i_BFu0ll_BFu0i, "aBFu7i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0ll");
    static aBFu7i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0ll(Test_aBFu7i_BFu0ll_BFu0ll, "aBFu7i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0s");
    static aBFu7i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0s(Test_aBFu7i_BFu0ll_BFu0s, "aBFu7i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15i");
    static aBFu7i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15i(Test_aBFu7i_BFu0ll_BFu15i, "aBFu7i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15ll");
    static aBFu7i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15ll(Test_aBFu7i_BFu0ll_BFu15ll, "aBFu7i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15s");
    static aBFu7i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15s(Test_aBFu7i_BFu0ll_BFu15s, "aBFu7i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16i");
    static aBFu7i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16i(Test_aBFu7i_BFu0ll_BFu16i, "aBFu7i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16ll");
    static aBFu7i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16ll(Test_aBFu7i_BFu0ll_BFu16ll, "aBFu7i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16s");
    static aBFu7i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16s(Test_aBFu7i_BFu0ll_BFu16s, "aBFu7i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu17i");
    static aBFu7i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu17i(Test_aBFu7i_BFu0ll_BFu17i, "aBFu7i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu17ll");
    static aBFu7i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu17ll(Test_aBFu7i_BFu0ll_BFu17ll, "aBFu7i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1c");
    static aBFu7i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1c(Test_aBFu7i_BFu0ll_BFu1c, "aBFu7i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1i");
    static aBFu7i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1i(Test_aBFu7i_BFu0ll_BFu1i, "aBFu7i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1ll");
    static aBFu7i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1ll(Test_aBFu7i_BFu0ll_BFu1ll, "aBFu7i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1s");
    static aBFu7i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1s(Test_aBFu7i_BFu0ll_BFu1s, "aBFu7i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu31i");
    static aBFu7i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu31i(Test_aBFu7i_BFu0ll_BFu31i, "aBFu7i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu31ll");
    static aBFu7i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu31ll(Test_aBFu7i_BFu0ll_BFu31ll, "aBFu7i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu32i");
    static aBFu7i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu32i(Test_aBFu7i_BFu0ll_BFu32i, "aBFu7i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu32ll");
    static aBFu7i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu32ll(Test_aBFu7i_BFu0ll_BFu32ll, "aBFu7i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu33");
    static aBFu7i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7i_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu33(Test_aBFu7i_BFu0ll_BFu33, "aBFu7i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7c");
    static aBFu7i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7c(Test_aBFu7i_BFu0ll_BFu7c, "aBFu7i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7i");
    static aBFu7i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7i(Test_aBFu7i_BFu0ll_BFu7i, "aBFu7i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7ll");
    static aBFu7i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7ll(Test_aBFu7i_BFu0ll_BFu7ll, "aBFu7i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7s");
    static aBFu7i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7s(Test_aBFu7i_BFu0ll_BFu7s, "aBFu7i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8c");
    static aBFu7i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8c(Test_aBFu7i_BFu0ll_BFu8c, "aBFu7i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8i");
    static aBFu7i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8i(Test_aBFu7i_BFu0ll_BFu8i, "aBFu7i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8ll");
    static aBFu7i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8ll(Test_aBFu7i_BFu0ll_BFu8ll, "aBFu7i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8s");
    static aBFu7i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8s(Test_aBFu7i_BFu0ll_BFu8s, "aBFu7i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9i");
    static aBFu7i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9i(Test_aBFu7i_BFu0ll_BFu9i, "aBFu7i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9ll");
    static aBFu7i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9ll(Test_aBFu7i_BFu0ll_BFu9ll, "aBFu7i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9s");
    static aBFu7i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9s(Test_aBFu7i_BFu0ll_BFu9s, "aBFu7i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_C()
{
  {
    init_simple_test("aBFu7i_BFu0ll_C");
    static aBFu7i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_C(Test_aBFu7i_BFu0ll_C, "aBFu7i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_D()
{
  {
    init_simple_test("aBFu7i_BFu0ll_D");
    static aBFu7i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_D(Test_aBFu7i_BFu0ll_D, "aBFu7i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_F()
{
  {
    init_simple_test("aBFu7i_BFu0ll_F");
    static aBFu7i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_F(Test_aBFu7i_BFu0ll_F, "aBFu7i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_I()
{
  {
    init_simple_test("aBFu7i_BFu0ll_I");
    static aBFu7i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_I(Test_aBFu7i_BFu0ll_I, "aBFu7i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ip");
    static aBFu7i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ip(Test_aBFu7i_BFu0ll_Ip, "aBFu7i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_L()
{
  {
    init_simple_test("aBFu7i_BFu0ll_L");
    static aBFu7i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_L(Test_aBFu7i_BFu0ll_L, "aBFu7i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_S()
{
  {
    init_simple_test("aBFu7i_BFu0ll_S");
    static aBFu7i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_S(Test_aBFu7i_BFu0ll_S, "aBFu7i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Uc");
    static aBFu7i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Uc(Test_aBFu7i_BFu0ll_Uc, "aBFu7i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ui");
    static aBFu7i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ui(Test_aBFu7i_BFu0ll_Ui, "aBFu7i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ul");
    static aBFu7i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ul(Test_aBFu7i_BFu0ll_Ul, "aBFu7i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Us");
    static aBFu7i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Us(Test_aBFu7i_BFu0ll_Us, "aBFu7i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Vp");
    static aBFu7i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Vp(Test_aBFu7i_BFu0ll_Vp, "aBFu7i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0s");
    static aBFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s(Test_aBFu7i_BFu0s, "aBFu7i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0c");
    static aBFu7i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0c(Test_aBFu7i_BFu0s_BFu0c, "aBFu7i_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0i");
    static aBFu7i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0i(Test_aBFu7i_BFu0s_BFu0i, "aBFu7i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0ll");
    static aBFu7i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0ll(Test_aBFu7i_BFu0s_BFu0ll, "aBFu7i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0s");
    static aBFu7i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0s(Test_aBFu7i_BFu0s_BFu0s, "aBFu7i_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15i");
    static aBFu7i_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15i(Test_aBFu7i_BFu0s_BFu15i, "aBFu7i_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15ll");
    static aBFu7i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15ll(Test_aBFu7i_BFu0s_BFu15ll, "aBFu7i_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15s");
    static aBFu7i_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15s(Test_aBFu7i_BFu0s_BFu15s, "aBFu7i_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16i");
    static aBFu7i_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16i(Test_aBFu7i_BFu0s_BFu16i, "aBFu7i_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16ll");
    static aBFu7i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16ll(Test_aBFu7i_BFu0s_BFu16ll, "aBFu7i_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16s");
    static aBFu7i_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16s(Test_aBFu7i_BFu0s_BFu16s, "aBFu7i_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu17i");
    static aBFu7i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu17i(Test_aBFu7i_BFu0s_BFu17i, "aBFu7i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu17ll");
    static aBFu7i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu17ll(Test_aBFu7i_BFu0s_BFu17ll, "aBFu7i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1c");
    static aBFu7i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1c(Test_aBFu7i_BFu0s_BFu1c, "aBFu7i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1i");
    static aBFu7i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1i(Test_aBFu7i_BFu0s_BFu1i, "aBFu7i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1ll");
    static aBFu7i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1ll(Test_aBFu7i_BFu0s_BFu1ll, "aBFu7i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1s");
    static aBFu7i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1s(Test_aBFu7i_BFu0s_BFu1s, "aBFu7i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu31i");
    static aBFu7i_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu31i(Test_aBFu7i_BFu0s_BFu31i, "aBFu7i_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu31ll");
    static aBFu7i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu31ll(Test_aBFu7i_BFu0s_BFu31ll, "aBFu7i_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu32i");
    static aBFu7i_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu32i(Test_aBFu7i_BFu0s_BFu32i, "aBFu7i_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu32ll");
    static aBFu7i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu32ll(Test_aBFu7i_BFu0s_BFu32ll, "aBFu7i_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu33");
    static aBFu7i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu33(Test_aBFu7i_BFu0s_BFu33, "aBFu7i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7c");
    static aBFu7i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7c(Test_aBFu7i_BFu0s_BFu7c, "aBFu7i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7i");
    static aBFu7i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7i(Test_aBFu7i_BFu0s_BFu7i, "aBFu7i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7ll");
    static aBFu7i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7ll(Test_aBFu7i_BFu0s_BFu7ll, "aBFu7i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7s");
    static aBFu7i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7s(Test_aBFu7i_BFu0s_BFu7s, "aBFu7i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8c");
    static aBFu7i_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8c(Test_aBFu7i_BFu0s_BFu8c, "aBFu7i_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8i");
    static aBFu7i_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8i(Test_aBFu7i_BFu0s_BFu8i, "aBFu7i_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8ll");
    static aBFu7i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8ll(Test_aBFu7i_BFu0s_BFu8ll, "aBFu7i_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8s");
    static aBFu7i_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8s(Test_aBFu7i_BFu0s_BFu8s, "aBFu7i_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9i");
    static aBFu7i_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9i(Test_aBFu7i_BFu0s_BFu9i, "aBFu7i_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9ll");
    static aBFu7i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9ll(Test_aBFu7i_BFu0s_BFu9ll, "aBFu7i_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9s");
    static aBFu7i_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9s(Test_aBFu7i_BFu0s_BFu9s, "aBFu7i_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_C()
{
  {
    init_simple_test("aBFu7i_BFu0s_C");
    static aBFu7i_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_C(Test_aBFu7i_BFu0s_C, "aBFu7i_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_D()
{
  {
    init_simple_test("aBFu7i_BFu0s_D");
    static aBFu7i_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_D(Test_aBFu7i_BFu0s_D, "aBFu7i_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_F()
{
  {
    init_simple_test("aBFu7i_BFu0s_F");
    static aBFu7i_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_F(Test_aBFu7i_BFu0s_F, "aBFu7i_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_I()
{
  {
    init_simple_test("aBFu7i_BFu0s_I");
    static aBFu7i_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_I(Test_aBFu7i_BFu0s_I, "aBFu7i_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ip");
    static aBFu7i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ip(Test_aBFu7i_BFu0s_Ip, "aBFu7i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_L()
{
  {
    init_simple_test("aBFu7i_BFu0s_L");
    static aBFu7i_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_L(Test_aBFu7i_BFu0s_L, "aBFu7i_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_S()
{
  {
    init_simple_test("aBFu7i_BFu0s_S");
    static aBFu7i_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_S(Test_aBFu7i_BFu0s_S, "aBFu7i_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0s_Uc");
    static aBFu7i_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Uc(Test_aBFu7i_BFu0s_Uc, "aBFu7i_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ui");
    static aBFu7i_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ui(Test_aBFu7i_BFu0s_Ui, "aBFu7i_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ul");
    static aBFu7i_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ul(Test_aBFu7i_BFu0s_Ul, "aBFu7i_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Us()
{
  {
    init_simple_test("aBFu7i_BFu0s_Us");
    static aBFu7i_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Us(Test_aBFu7i_BFu0s_Us, "aBFu7i_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0s_Vp");
    static aBFu7i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Vp(Test_aBFu7i_BFu0s_Vp, "aBFu7i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0c");
    static aBFu7i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0c(Test_aBFu7i_BFu15i_BFu0c, "aBFu7i_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0i");
    static aBFu7i_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0i(Test_aBFu7i_BFu15i_BFu0i, "aBFu7i_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0ll");
    static aBFu7i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0ll(Test_aBFu7i_BFu15i_BFu0ll, "aBFu7i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0s");
    static aBFu7i_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0s(Test_aBFu7i_BFu15i_BFu0s, "aBFu7i_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0c");
    static aBFu7i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0c(Test_aBFu7i_BFu15ll_BFu0c, "aBFu7i_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0i");
    static aBFu7i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0i(Test_aBFu7i_BFu15ll_BFu0i, "aBFu7i_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0ll");
    static aBFu7i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0ll(Test_aBFu7i_BFu15ll_BFu0ll, "aBFu7i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0s");
    static aBFu7i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0s(Test_aBFu7i_BFu15ll_BFu0s, "aBFu7i_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0c");
    static aBFu7i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0c(Test_aBFu7i_BFu15s_BFu0c, "aBFu7i_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0i");
    static aBFu7i_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0i(Test_aBFu7i_BFu15s_BFu0i, "aBFu7i_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0ll");
    static aBFu7i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0ll(Test_aBFu7i_BFu15s_BFu0ll, "aBFu7i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0s");
    static aBFu7i_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0s(Test_aBFu7i_BFu15s_BFu0s, "aBFu7i_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0c");
    static aBFu7i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0c(Test_aBFu7i_BFu16i_BFu0c, "aBFu7i_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0i");
    static aBFu7i_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0i(Test_aBFu7i_BFu16i_BFu0i, "aBFu7i_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0ll");
    static aBFu7i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0ll(Test_aBFu7i_BFu16i_BFu0ll, "aBFu7i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0s");
    static aBFu7i_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0s(Test_aBFu7i_BFu16i_BFu0s, "aBFu7i_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0c");
    static aBFu7i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0c(Test_aBFu7i_BFu16ll_BFu0c, "aBFu7i_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0i");
    static aBFu7i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0i(Test_aBFu7i_BFu16ll_BFu0i, "aBFu7i_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0ll");
    static aBFu7i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0ll(Test_aBFu7i_BFu16ll_BFu0ll, "aBFu7i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0s");
    static aBFu7i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0s(Test_aBFu7i_BFu16ll_BFu0s, "aBFu7i_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0c");
    static aBFu7i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0c(Test_aBFu7i_BFu16s_BFu0c, "aBFu7i_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0i");
    static aBFu7i_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0i(Test_aBFu7i_BFu16s_BFu0i, "aBFu7i_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0ll");
    static aBFu7i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0ll(Test_aBFu7i_BFu16s_BFu0ll, "aBFu7i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0s");
    static aBFu7i_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0s(Test_aBFu7i_BFu16s_BFu0s, "aBFu7i_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0c");
    static aBFu7i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0c(Test_aBFu7i_BFu17i_BFu0c, "aBFu7i_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0i");
    static aBFu7i_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0i(Test_aBFu7i_BFu17i_BFu0i, "aBFu7i_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0ll");
    static aBFu7i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0ll(Test_aBFu7i_BFu17i_BFu0ll, "aBFu7i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0s");
    static aBFu7i_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0s(Test_aBFu7i_BFu17i_BFu0s, "aBFu7i_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0c");
    static aBFu7i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0c(Test_aBFu7i_BFu17ll_BFu0c, "aBFu7i_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0i");
    static aBFu7i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0i(Test_aBFu7i_BFu17ll_BFu0i, "aBFu7i_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0ll");
    static aBFu7i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0ll(Test_aBFu7i_BFu17ll_BFu0ll, "aBFu7i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0s");
    static aBFu7i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0s(Test_aBFu7i_BFu17ll_BFu0s, "aBFu7i_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0c");
    static aBFu7i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0c(Test_aBFu7i_BFu1c_BFu0c, "aBFu7i_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0i");
    static aBFu7i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0i(Test_aBFu7i_BFu1c_BFu0i, "aBFu7i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0ll");
    static aBFu7i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0ll(Test_aBFu7i_BFu1c_BFu0ll, "aBFu7i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0s");
    static aBFu7i_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0s(Test_aBFu7i_BFu1c_BFu0s, "aBFu7i_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0c");
    static aBFu7i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0c(Test_aBFu7i_BFu1i_BFu0c, "aBFu7i_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0i");
    static aBFu7i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0i(Test_aBFu7i_BFu1i_BFu0i, "aBFu7i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0ll");
    static aBFu7i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0ll(Test_aBFu7i_BFu1i_BFu0ll, "aBFu7i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0s");
    static aBFu7i_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0s(Test_aBFu7i_BFu1i_BFu0s, "aBFu7i_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0c");
    static aBFu7i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0c(Test_aBFu7i_BFu1ll_BFu0c, "aBFu7i_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0i");
    static aBFu7i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0i(Test_aBFu7i_BFu1ll_BFu0i, "aBFu7i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0ll");
    static aBFu7i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0ll(Test_aBFu7i_BFu1ll_BFu0ll, "aBFu7i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0s");
    static aBFu7i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0s(Test_aBFu7i_BFu1ll_BFu0s, "aBFu7i_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0c");
    static aBFu7i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0c(Test_aBFu7i_BFu1s_BFu0c, "aBFu7i_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0i");
    static aBFu7i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0i(Test_aBFu7i_BFu1s_BFu0i, "aBFu7i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0ll");
    static aBFu7i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0ll(Test_aBFu7i_BFu1s_BFu0ll, "aBFu7i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0s");
    static aBFu7i_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0s(Test_aBFu7i_BFu1s_BFu0s, "aBFu7i_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0c");
    static aBFu7i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0c(Test_aBFu7i_BFu31i_BFu0c, "aBFu7i_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0i");
    static aBFu7i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0i(Test_aBFu7i_BFu31i_BFu0i, "aBFu7i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0ll");
    static aBFu7i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0ll(Test_aBFu7i_BFu31i_BFu0ll, "aBFu7i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0s");
    static aBFu7i_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0s(Test_aBFu7i_BFu31i_BFu0s, "aBFu7i_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0c");
    static aBFu7i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0c(Test_aBFu7i_BFu31ll_BFu0c, "aBFu7i_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0i");
    static aBFu7i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0i(Test_aBFu7i_BFu31ll_BFu0i, "aBFu7i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0ll");
    static aBFu7i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0ll(Test_aBFu7i_BFu31ll_BFu0ll, "aBFu7i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0s");
    static aBFu7i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0s(Test_aBFu7i_BFu31ll_BFu0s, "aBFu7i_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0c");
    static aBFu7i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0c(Test_aBFu7i_BFu32i_BFu0c, "aBFu7i_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0i");
    static aBFu7i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0i(Test_aBFu7i_BFu32i_BFu0i, "aBFu7i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0ll");
    static aBFu7i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0ll(Test_aBFu7i_BFu32i_BFu0ll, "aBFu7i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0s");
    static aBFu7i_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0s(Test_aBFu7i_BFu32i_BFu0s, "aBFu7i_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0c");
    static aBFu7i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0c(Test_aBFu7i_BFu32ll_BFu0c, "aBFu7i_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0i");
    static aBFu7i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0i(Test_aBFu7i_BFu32ll_BFu0i, "aBFu7i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0ll");
    static aBFu7i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0ll(Test_aBFu7i_BFu32ll_BFu0ll, "aBFu7i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0s");
    static aBFu7i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0s(Test_aBFu7i_BFu32ll_BFu0s, "aBFu7i_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0c");
    static aBFu7i_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0c(Test_aBFu7i_BFu33_BFu0c, "aBFu7i_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0i");
    static aBFu7i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0i(Test_aBFu7i_BFu33_BFu0i, "aBFu7i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0ll");
    static aBFu7i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0ll(Test_aBFu7i_BFu33_BFu0ll, "aBFu7i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0s");
    static aBFu7i_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0s(Test_aBFu7i_BFu33_BFu0s, "aBFu7i_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0c");
    static aBFu7i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0c(Test_aBFu7i_BFu7c_BFu0c, "aBFu7i_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0i");
    static aBFu7i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0i(Test_aBFu7i_BFu7c_BFu0i, "aBFu7i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0ll");
    static aBFu7i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0ll(Test_aBFu7i_BFu7c_BFu0ll, "aBFu7i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0s");
    static aBFu7i_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0s(Test_aBFu7i_BFu7c_BFu0s, "aBFu7i_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0c");
    static aBFu7i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0c(Test_aBFu7i_BFu7i_BFu0c, "aBFu7i_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0i");
    static aBFu7i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0i(Test_aBFu7i_BFu7i_BFu0i, "aBFu7i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0ll");
    static aBFu7i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0ll(Test_aBFu7i_BFu7i_BFu0ll, "aBFu7i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0s");
    static aBFu7i_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0s(Test_aBFu7i_BFu7i_BFu0s, "aBFu7i_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0c");
    static aBFu7i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0c(Test_aBFu7i_BFu7ll_BFu0c, "aBFu7i_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0i");
    static aBFu7i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0i(Test_aBFu7i_BFu7ll_BFu0i, "aBFu7i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0ll");
    static aBFu7i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0ll(Test_aBFu7i_BFu7ll_BFu0ll, "aBFu7i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0s");
    static aBFu7i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0s(Test_aBFu7i_BFu7ll_BFu0s, "aBFu7i_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0c");
    static aBFu7i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0c(Test_aBFu7i_BFu7s_BFu0c, "aBFu7i_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0i");
    static aBFu7i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0i(Test_aBFu7i_BFu7s_BFu0i, "aBFu7i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0ll");
    static aBFu7i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0ll(Test_aBFu7i_BFu7s_BFu0ll, "aBFu7i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0s");
    static aBFu7i_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0s(Test_aBFu7i_BFu7s_BFu0s, "aBFu7i_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0c");
    static aBFu7i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0c(Test_aBFu7i_BFu8c_BFu0c, "aBFu7i_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0i");
    static aBFu7i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0i(Test_aBFu7i_BFu8c_BFu0i, "aBFu7i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0ll");
    static aBFu7i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0ll(Test_aBFu7i_BFu8c_BFu0ll, "aBFu7i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0s");
    static aBFu7i_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0s(Test_aBFu7i_BFu8c_BFu0s, "aBFu7i_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0c");
    static aBFu7i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0c(Test_aBFu7i_BFu8i_BFu0c, "aBFu7i_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0i");
    static aBFu7i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0i(Test_aBFu7i_BFu8i_BFu0i, "aBFu7i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0ll");
    static aBFu7i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0ll(Test_aBFu7i_BFu8i_BFu0ll, "aBFu7i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0s");
    static aBFu7i_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0s(Test_aBFu7i_BFu8i_BFu0s, "aBFu7i_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0c");
    static aBFu7i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0c(Test_aBFu7i_BFu8ll_BFu0c, "aBFu7i_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0i");
    static aBFu7i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0i(Test_aBFu7i_BFu8ll_BFu0i, "aBFu7i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0ll");
    static aBFu7i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0ll(Test_aBFu7i_BFu8ll_BFu0ll, "aBFu7i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0s");
    static aBFu7i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0s(Test_aBFu7i_BFu8ll_BFu0s, "aBFu7i_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0c");
    static aBFu7i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0c(Test_aBFu7i_BFu8s_BFu0c, "aBFu7i_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0i");
    static aBFu7i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0i(Test_aBFu7i_BFu8s_BFu0i, "aBFu7i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0ll");
    static aBFu7i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0ll(Test_aBFu7i_BFu8s_BFu0ll, "aBFu7i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0s");
    static aBFu7i_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0s(Test_aBFu7i_BFu8s_BFu0s, "aBFu7i_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0c");
    static aBFu7i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0c(Test_aBFu7i_BFu9i_BFu0c, "aBFu7i_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0i");
    static aBFu7i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0i(Test_aBFu7i_BFu9i_BFu0i, "aBFu7i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0ll");
    static aBFu7i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0ll(Test_aBFu7i_BFu9i_BFu0ll, "aBFu7i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0s");
    static aBFu7i_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0s(Test_aBFu7i_BFu9i_BFu0s, "aBFu7i_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0c");
    static aBFu7i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0c(Test_aBFu7i_BFu9ll_BFu0c, "aBFu7i_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0i");
    static aBFu7i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0i(Test_aBFu7i_BFu9ll_BFu0i, "aBFu7i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0ll");
    static aBFu7i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0ll(Test_aBFu7i_BFu9ll_BFu0ll, "aBFu7i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0s");
    static aBFu7i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0s(Test_aBFu7i_BFu9ll_BFu0s, "aBFu7i_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0c");
    static aBFu7i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0c(Test_aBFu7i_BFu9s_BFu0c, "aBFu7i_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0i");
    static aBFu7i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0i(Test_aBFu7i_BFu9s_BFu0i, "aBFu7i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0ll");
    static aBFu7i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0ll(Test_aBFu7i_BFu9s_BFu0ll, "aBFu7i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0s");
    static aBFu7i_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0s(Test_aBFu7i_BFu9s_BFu0s, "aBFu7i_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0c()
{
  {
    init_simple_test("aBFu7i_C_BFu0c");
    static aBFu7i_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0c(Test_aBFu7i_C_BFu0c, "aBFu7i_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0i()
{
  {
    init_simple_test("aBFu7i_C_BFu0i");
    static aBFu7i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0i(Test_aBFu7i_C_BFu0i, "aBFu7i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0ll()
{
  {
    init_simple_test("aBFu7i_C_BFu0ll");
    static aBFu7i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0ll(Test_aBFu7i_C_BFu0ll, "aBFu7i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0s()
{
  {
    init_simple_test("aBFu7i_C_BFu0s");
    static aBFu7i_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0s(Test_aBFu7i_C_BFu0s, "aBFu7i_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0c()
{
  {
    init_simple_test("aBFu7i_D_BFu0c");
    static aBFu7i_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0c(Test_aBFu7i_D_BFu0c, "aBFu7i_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0i()
{
  {
    init_simple_test("aBFu7i_D_BFu0i");
    static aBFu7i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0i(Test_aBFu7i_D_BFu0i, "aBFu7i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0ll()
{
  {
    init_simple_test("aBFu7i_D_BFu0ll");
    static aBFu7i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0ll(Test_aBFu7i_D_BFu0ll, "aBFu7i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0s()
{
  {
    init_simple_test("aBFu7i_D_BFu0s");
    static aBFu7i_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0s(Test_aBFu7i_D_BFu0s, "aBFu7i_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0c()
{
  {
    init_simple_test("aBFu7i_F_BFu0c");
    static aBFu7i_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0c(Test_aBFu7i_F_BFu0c, "aBFu7i_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0i()
{
  {
    init_simple_test("aBFu7i_F_BFu0i");
    static aBFu7i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0i(Test_aBFu7i_F_BFu0i, "aBFu7i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0ll()
{
  {
    init_simple_test("aBFu7i_F_BFu0ll");
    static aBFu7i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0ll(Test_aBFu7i_F_BFu0ll, "aBFu7i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0s()
{
  {
    init_simple_test("aBFu7i_F_BFu0s");
    static aBFu7i_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0s(Test_aBFu7i_F_BFu0s, "aBFu7i_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0c()
{
  {
    init_simple_test("aBFu7i_I_BFu0c");
    static aBFu7i_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0c(Test_aBFu7i_I_BFu0c, "aBFu7i_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0i()
{
  {
    init_simple_test("aBFu7i_I_BFu0i");
    static aBFu7i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0i(Test_aBFu7i_I_BFu0i, "aBFu7i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0ll()
{
  {
    init_simple_test("aBFu7i_I_BFu0ll");
    static aBFu7i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0ll(Test_aBFu7i_I_BFu0ll, "aBFu7i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0s()
{
  {
    init_simple_test("aBFu7i_I_BFu0s");
    static aBFu7i_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0s(Test_aBFu7i_I_BFu0s, "aBFu7i_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0c");
    static aBFu7i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0c(Test_aBFu7i_Ip_BFu0c, "aBFu7i_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0i");
    static aBFu7i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0i(Test_aBFu7i_Ip_BFu0i, "aBFu7i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0ll");
    static aBFu7i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0ll(Test_aBFu7i_Ip_BFu0ll, "aBFu7i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0s");
    static aBFu7i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0s(Test_aBFu7i_Ip_BFu0s, "aBFu7i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0c()
{
  {
    init_simple_test("aBFu7i_L_BFu0c");
    static aBFu7i_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0c(Test_aBFu7i_L_BFu0c, "aBFu7i_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0i()
{
  {
    init_simple_test("aBFu7i_L_BFu0i");
    static aBFu7i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0i(Test_aBFu7i_L_BFu0i, "aBFu7i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0ll()
{
  {
    init_simple_test("aBFu7i_L_BFu0ll");
    static aBFu7i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0ll(Test_aBFu7i_L_BFu0ll, "aBFu7i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0s()
{
  {
    init_simple_test("aBFu7i_L_BFu0s");
    static aBFu7i_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0s(Test_aBFu7i_L_BFu0s, "aBFu7i_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0c()
{
  {
    init_simple_test("aBFu7i_S_BFu0c");
    static aBFu7i_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0c(Test_aBFu7i_S_BFu0c, "aBFu7i_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0i()
{
  {
    init_simple_test("aBFu7i_S_BFu0i");
    static aBFu7i_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0i(Test_aBFu7i_S_BFu0i, "aBFu7i_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0ll()
{
  {
    init_simple_test("aBFu7i_S_BFu0ll");
    static aBFu7i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0ll(Test_aBFu7i_S_BFu0ll, "aBFu7i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0s()
{
  {
    init_simple_test("aBFu7i_S_BFu0s");
    static aBFu7i_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0s(Test_aBFu7i_S_BFu0s, "aBFu7i_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0c");
    static aBFu7i_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0c(Test_aBFu7i_Uc_BFu0c, "aBFu7i_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0i");
    static aBFu7i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0i(Test_aBFu7i_Uc_BFu0i, "aBFu7i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0ll");
    static aBFu7i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0ll(Test_aBFu7i_Uc_BFu0ll, "aBFu7i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0s");
    static aBFu7i_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0s(Test_aBFu7i_Uc_BFu0s, "aBFu7i_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0c");
    static aBFu7i_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0c(Test_aBFu7i_Ui_BFu0c, "aBFu7i_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0i");
    static aBFu7i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0i(Test_aBFu7i_Ui_BFu0i, "aBFu7i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0ll");
    static aBFu7i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0ll(Test_aBFu7i_Ui_BFu0ll, "aBFu7i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0s");
    static aBFu7i_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0s(Test_aBFu7i_Ui_BFu0s, "aBFu7i_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0c");
    static aBFu7i_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0c(Test_aBFu7i_Ul_BFu0c, "aBFu7i_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0i");
    static aBFu7i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0i(Test_aBFu7i_Ul_BFu0i, "aBFu7i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0ll");
    static aBFu7i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0ll(Test_aBFu7i_Ul_BFu0ll, "aBFu7i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0s");
    static aBFu7i_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0s(Test_aBFu7i_Ul_BFu0s, "aBFu7i_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0c()
{
  {
    init_simple_test("aBFu7i_Us_BFu0c");
    static aBFu7i_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0c(Test_aBFu7i_Us_BFu0c, "aBFu7i_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0i()
{
  {
    init_simple_test("aBFu7i_Us_BFu0i");
    static aBFu7i_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0i(Test_aBFu7i_Us_BFu0i, "aBFu7i_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Us_BFu0ll");
    static aBFu7i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0ll(Test_aBFu7i_Us_BFu0ll, "aBFu7i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0s()
{
  {
    init_simple_test("aBFu7i_Us_BFu0s");
    static aBFu7i_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0s(Test_aBFu7i_Us_BFu0s, "aBFu7i_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0c");
    static aBFu7i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0c(Test_aBFu7i_Vp_BFu0c, "aBFu7i_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0i");
    static aBFu7i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0i(Test_aBFu7i_Vp_BFu0i, "aBFu7i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0ll");
    static aBFu7i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0ll(Test_aBFu7i_Vp_BFu0ll, "aBFu7i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0s");
    static aBFu7i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0s(Test_aBFu7i_Vp_BFu0s, "aBFu7i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0c");
    static aBFu7ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c(Test_aBFu7ll_BFu0c, "aBFu7ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0c");
    static aBFu7ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0c(Test_aBFu7ll_BFu0c_BFu0c, "aBFu7ll_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0i");
    static aBFu7ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0i(Test_aBFu7ll_BFu0c_BFu0i, "aBFu7ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0ll");
    static aBFu7ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0ll(Test_aBFu7ll_BFu0c_BFu0ll, "aBFu7ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0s");
    static aBFu7ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0s(Test_aBFu7ll_BFu0c_BFu0s, "aBFu7ll_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15i");
    static aBFu7ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15i(Test_aBFu7ll_BFu0c_BFu15i, "aBFu7ll_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15ll");
    static aBFu7ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15ll(Test_aBFu7ll_BFu0c_BFu15ll, "aBFu7ll_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15s");
    static aBFu7ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15s(Test_aBFu7ll_BFu0c_BFu15s, "aBFu7ll_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16i");
    static aBFu7ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16i(Test_aBFu7ll_BFu0c_BFu16i, "aBFu7ll_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16ll");
    static aBFu7ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16ll(Test_aBFu7ll_BFu0c_BFu16ll, "aBFu7ll_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16s");
    static aBFu7ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16s(Test_aBFu7ll_BFu0c_BFu16s, "aBFu7ll_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu17i");
    static aBFu7ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu17i(Test_aBFu7ll_BFu0c_BFu17i, "aBFu7ll_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu17ll");
    static aBFu7ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu17ll(Test_aBFu7ll_BFu0c_BFu17ll, "aBFu7ll_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1c");
    static aBFu7ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1c(Test_aBFu7ll_BFu0c_BFu1c, "aBFu7ll_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1i");
    static aBFu7ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1i(Test_aBFu7ll_BFu0c_BFu1i, "aBFu7ll_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1ll");
    static aBFu7ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1ll(Test_aBFu7ll_BFu0c_BFu1ll, "aBFu7ll_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1s");
    static aBFu7ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1s(Test_aBFu7ll_BFu0c_BFu1s, "aBFu7ll_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu31i");
    static aBFu7ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu31i(Test_aBFu7ll_BFu0c_BFu31i, "aBFu7ll_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu31ll");
    static aBFu7ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu31ll(Test_aBFu7ll_BFu0c_BFu31ll, "aBFu7ll_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu32i");
    static aBFu7ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu32i(Test_aBFu7ll_BFu0c_BFu32i, "aBFu7ll_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu32ll");
    static aBFu7ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu32ll(Test_aBFu7ll_BFu0c_BFu32ll, "aBFu7ll_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu33");
    static aBFu7ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu33(Test_aBFu7ll_BFu0c_BFu33, "aBFu7ll_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7c");
    static aBFu7ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7c(Test_aBFu7ll_BFu0c_BFu7c, "aBFu7ll_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7i");
    static aBFu7ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7i(Test_aBFu7ll_BFu0c_BFu7i, "aBFu7ll_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7ll");
    static aBFu7ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7ll(Test_aBFu7ll_BFu0c_BFu7ll, "aBFu7ll_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7s");
    static aBFu7ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7s(Test_aBFu7ll_BFu0c_BFu7s, "aBFu7ll_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8c");
    static aBFu7ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8c(Test_aBFu7ll_BFu0c_BFu8c, "aBFu7ll_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8i");
    static aBFu7ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8i(Test_aBFu7ll_BFu0c_BFu8i, "aBFu7ll_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8ll");
    static aBFu7ll_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8ll(Test_aBFu7ll_BFu0c_BFu8ll, "aBFu7ll_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8s");
    static aBFu7ll_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8s(Test_aBFu7ll_BFu0c_BFu8s, "aBFu7ll_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9i");
    static aBFu7ll_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9i(Test_aBFu7ll_BFu0c_BFu9i, "aBFu7ll_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9ll");
    static aBFu7ll_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9ll(Test_aBFu7ll_BFu0c_BFu9ll, "aBFu7ll_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9s");
    static aBFu7ll_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9s(Test_aBFu7ll_BFu0c_BFu9s, "aBFu7ll_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_C()
{
  {
    init_simple_test("aBFu7ll_BFu0c_C");
    static aBFu7ll_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_C(Test_aBFu7ll_BFu0c_C, "aBFu7ll_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_D()
{
  {
    init_simple_test("aBFu7ll_BFu0c_D");
    static aBFu7ll_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_D(Test_aBFu7ll_BFu0c_D, "aBFu7ll_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_F()
{
  {
    init_simple_test("aBFu7ll_BFu0c_F");
    static aBFu7ll_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_F(Test_aBFu7ll_BFu0c_F, "aBFu7ll_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_I()
{
  {
    init_simple_test("aBFu7ll_BFu0c_I");
    static aBFu7ll_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_I(Test_aBFu7ll_BFu0c_I, "aBFu7ll_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ip");
    static aBFu7ll_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ip(Test_aBFu7ll_BFu0c_Ip, "aBFu7ll_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_L()
{
  {
    init_simple_test("aBFu7ll_BFu0c_L");
    static aBFu7ll_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_L(Test_aBFu7ll_BFu0c_L, "aBFu7ll_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_S()
{
  {
    init_simple_test("aBFu7ll_BFu0c_S");
    static aBFu7ll_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_S(Test_aBFu7ll_BFu0c_S, "aBFu7ll_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Uc");
    static aBFu7ll_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Uc(Test_aBFu7ll_BFu0c_Uc, "aBFu7ll_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ui");
    static aBFu7ll_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ui(Test_aBFu7ll_BFu0c_Ui, "aBFu7ll_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ul");
    static aBFu7ll_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ul(Test_aBFu7ll_BFu0c_Ul, "aBFu7ll_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Us");
    static aBFu7ll_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Us(Test_aBFu7ll_BFu0c_Us, "aBFu7ll_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Vp");
    static aBFu7ll_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Vp(Test_aBFu7ll_BFu0c_Vp, "aBFu7ll_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0i");
    static aBFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i(Test_aBFu7ll_BFu0i, "aBFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0c");
    static aBFu7ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0c(Test_aBFu7ll_BFu0i_BFu0c, "aBFu7ll_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0i");
    static aBFu7ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0i(Test_aBFu7ll_BFu0i_BFu0i, "aBFu7ll_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0ll");
    static aBFu7ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0ll(Test_aBFu7ll_BFu0i_BFu0ll, "aBFu7ll_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0s");
    static aBFu7ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0s(Test_aBFu7ll_BFu0i_BFu0s, "aBFu7ll_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15i");
    static aBFu7ll_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15i(Test_aBFu7ll_BFu0i_BFu15i, "aBFu7ll_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15ll");
    static aBFu7ll_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15ll(Test_aBFu7ll_BFu0i_BFu15ll, "aBFu7ll_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15s");
    static aBFu7ll_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15s(Test_aBFu7ll_BFu0i_BFu15s, "aBFu7ll_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16i");
    static aBFu7ll_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16i(Test_aBFu7ll_BFu0i_BFu16i, "aBFu7ll_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16ll");
    static aBFu7ll_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16ll(Test_aBFu7ll_BFu0i_BFu16ll, "aBFu7ll_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16s");
    static aBFu7ll_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16s(Test_aBFu7ll_BFu0i_BFu16s, "aBFu7ll_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu17i");
    static aBFu7ll_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu17i(Test_aBFu7ll_BFu0i_BFu17i, "aBFu7ll_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu17ll");
    static aBFu7ll_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu17ll(Test_aBFu7ll_BFu0i_BFu17ll, "aBFu7ll_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1c");
    static aBFu7ll_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1c(Test_aBFu7ll_BFu0i_BFu1c, "aBFu7ll_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1i");
    static aBFu7ll_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1i(Test_aBFu7ll_BFu0i_BFu1i, "aBFu7ll_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1ll");
    static aBFu7ll_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1ll(Test_aBFu7ll_BFu0i_BFu1ll, "aBFu7ll_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1s");
    static aBFu7ll_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1s(Test_aBFu7ll_BFu0i_BFu1s, "aBFu7ll_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu31i");
    static aBFu7ll_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu31i(Test_aBFu7ll_BFu0i_BFu31i, "aBFu7ll_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu31ll");
    static aBFu7ll_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu31ll(Test_aBFu7ll_BFu0i_BFu31ll, "aBFu7ll_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu32i");
    static aBFu7ll_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu32i(Test_aBFu7ll_BFu0i_BFu32i, "aBFu7ll_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu32ll");
    static aBFu7ll_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu32ll(Test_aBFu7ll_BFu0i_BFu32ll, "aBFu7ll_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu33");
    static aBFu7ll_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7ll_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu33(Test_aBFu7ll_BFu0i_BFu33, "aBFu7ll_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7c");
    static aBFu7ll_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7c(Test_aBFu7ll_BFu0i_BFu7c, "aBFu7ll_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7i");
    static aBFu7ll_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7i(Test_aBFu7ll_BFu0i_BFu7i, "aBFu7ll_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7ll");
    static aBFu7ll_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7ll(Test_aBFu7ll_BFu0i_BFu7ll, "aBFu7ll_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7s");
    static aBFu7ll_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7s(Test_aBFu7ll_BFu0i_BFu7s, "aBFu7ll_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8c");
    static aBFu7ll_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8c(Test_aBFu7ll_BFu0i_BFu8c, "aBFu7ll_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8i");
    static aBFu7ll_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8i(Test_aBFu7ll_BFu0i_BFu8i, "aBFu7ll_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8ll");
    static aBFu7ll_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8ll(Test_aBFu7ll_BFu0i_BFu8ll, "aBFu7ll_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8s");
    static aBFu7ll_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8s(Test_aBFu7ll_BFu0i_BFu8s, "aBFu7ll_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9i");
    static aBFu7ll_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9i(Test_aBFu7ll_BFu0i_BFu9i, "aBFu7ll_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9ll");
    static aBFu7ll_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9ll(Test_aBFu7ll_BFu0i_BFu9ll, "aBFu7ll_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9s");
    static aBFu7ll_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9s(Test_aBFu7ll_BFu0i_BFu9s, "aBFu7ll_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_C()
{
  {
    init_simple_test("aBFu7ll_BFu0i_C");
    static aBFu7ll_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_C(Test_aBFu7ll_BFu0i_C, "aBFu7ll_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_D()
{
  {
    init_simple_test("aBFu7ll_BFu0i_D");
    static aBFu7ll_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_D(Test_aBFu7ll_BFu0i_D, "aBFu7ll_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_F()
{
  {
    init_simple_test("aBFu7ll_BFu0i_F");
    static aBFu7ll_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_F(Test_aBFu7ll_BFu0i_F, "aBFu7ll_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_I()
{
  {
    init_simple_test("aBFu7ll_BFu0i_I");
    static aBFu7ll_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_I(Test_aBFu7ll_BFu0i_I, "aBFu7ll_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ip");
    static aBFu7ll_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ip(Test_aBFu7ll_BFu0i_Ip, "aBFu7ll_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_L()
{
  {
    init_simple_test("aBFu7ll_BFu0i_L");
    static aBFu7ll_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_L(Test_aBFu7ll_BFu0i_L, "aBFu7ll_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_S()
{
  {
    init_simple_test("aBFu7ll_BFu0i_S");
    static aBFu7ll_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_S(Test_aBFu7ll_BFu0i_S, "aBFu7ll_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Uc");
    static aBFu7ll_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Uc(Test_aBFu7ll_BFu0i_Uc, "aBFu7ll_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ui");
    static aBFu7ll_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ui(Test_aBFu7ll_BFu0i_Ui, "aBFu7ll_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ul");
    static aBFu7ll_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ul(Test_aBFu7ll_BFu0i_Ul, "aBFu7ll_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Us");
    static aBFu7ll_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Us(Test_aBFu7ll_BFu0i_Us, "aBFu7ll_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Vp");
    static aBFu7ll_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Vp(Test_aBFu7ll_BFu0i_Vp, "aBFu7ll_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll");
    static aBFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll(Test_aBFu7ll_BFu0ll, "aBFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0c");
    static aBFu7ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0c(Test_aBFu7ll_BFu0ll_BFu0c, "aBFu7ll_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0i");
    static aBFu7ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0i(Test_aBFu7ll_BFu0ll_BFu0i, "aBFu7ll_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0ll");
    static aBFu7ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0ll(Test_aBFu7ll_BFu0ll_BFu0ll, "aBFu7ll_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0s");
    static aBFu7ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0s(Test_aBFu7ll_BFu0ll_BFu0s, "aBFu7ll_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15i");
    static aBFu7ll_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15i(Test_aBFu7ll_BFu0ll_BFu15i, "aBFu7ll_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15ll");
    static aBFu7ll_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15ll(Test_aBFu7ll_BFu0ll_BFu15ll, "aBFu7ll_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15s");
    static aBFu7ll_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15s(Test_aBFu7ll_BFu0ll_BFu15s, "aBFu7ll_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16i");
    static aBFu7ll_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16i(Test_aBFu7ll_BFu0ll_BFu16i, "aBFu7ll_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16ll");
    static aBFu7ll_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16ll(Test_aBFu7ll_BFu0ll_BFu16ll, "aBFu7ll_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16s");
    static aBFu7ll_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16s(Test_aBFu7ll_BFu0ll_BFu16s, "aBFu7ll_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu17i");
    static aBFu7ll_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7ll_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu17i(Test_aBFu7ll_BFu0ll_BFu17i, "aBFu7ll_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu17ll");
    static aBFu7ll_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7ll_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu17ll(Test_aBFu7ll_BFu0ll_BFu17ll, "aBFu7ll_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1c");
    static aBFu7ll_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1c(Test_aBFu7ll_BFu0ll_BFu1c, "aBFu7ll_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1i");
    static aBFu7ll_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1i(Test_aBFu7ll_BFu0ll_BFu1i, "aBFu7ll_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1ll");
    static aBFu7ll_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1ll(Test_aBFu7ll_BFu0ll_BFu1ll, "aBFu7ll_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1s");
    static aBFu7ll_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1s(Test_aBFu7ll_BFu0ll_BFu1s, "aBFu7ll_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu31i");
    static aBFu7ll_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu31i(Test_aBFu7ll_BFu0ll_BFu31i, "aBFu7ll_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu31ll");
    static aBFu7ll_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu31ll(Test_aBFu7ll_BFu0ll_BFu31ll, "aBFu7ll_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu32i");
    static aBFu7ll_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu32i(Test_aBFu7ll_BFu0ll_BFu32i, "aBFu7ll_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu32ll");
    static aBFu7ll_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu32ll(Test_aBFu7ll_BFu0ll_BFu32ll, "aBFu7ll_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu33");
    static aBFu7ll_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7ll_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu33(Test_aBFu7ll_BFu0ll_BFu33, "aBFu7ll_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7c");
    static aBFu7ll_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7c(Test_aBFu7ll_BFu0ll_BFu7c, "aBFu7ll_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7i");
    static aBFu7ll_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7i(Test_aBFu7ll_BFu0ll_BFu7i, "aBFu7ll_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7ll");
    static aBFu7ll_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7ll(Test_aBFu7ll_BFu0ll_BFu7ll, "aBFu7ll_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7s");
    static aBFu7ll_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7s(Test_aBFu7ll_BFu0ll_BFu7s, "aBFu7ll_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8c");
    static aBFu7ll_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8c(Test_aBFu7ll_BFu0ll_BFu8c, "aBFu7ll_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8i");
    static aBFu7ll_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8i(Test_aBFu7ll_BFu0ll_BFu8i, "aBFu7ll_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8ll");
    static aBFu7ll_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8ll(Test_aBFu7ll_BFu0ll_BFu8ll, "aBFu7ll_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8s");
    static aBFu7ll_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8s(Test_aBFu7ll_BFu0ll_BFu8s, "aBFu7ll_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9i");
    static aBFu7ll_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9i(Test_aBFu7ll_BFu0ll_BFu9i, "aBFu7ll_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9ll");
    static aBFu7ll_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9ll(Test_aBFu7ll_BFu0ll_BFu9ll, "aBFu7ll_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9s");
    static aBFu7ll_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9s(Test_aBFu7ll_BFu0ll_BFu9s, "aBFu7ll_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_C()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_C");
    static aBFu7ll_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_C(Test_aBFu7ll_BFu0ll_C, "aBFu7ll_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_D()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_D");
    static aBFu7ll_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_D(Test_aBFu7ll_BFu0ll_D, "aBFu7ll_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_F()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_F");
    static aBFu7ll_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_F(Test_aBFu7ll_BFu0ll_F, "aBFu7ll_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_I()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_I");
    static aBFu7ll_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_I(Test_aBFu7ll_BFu0ll_I, "aBFu7ll_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ip");
    static aBFu7ll_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ip(Test_aBFu7ll_BFu0ll_Ip, "aBFu7ll_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_L()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_L");
    static aBFu7ll_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_L(Test_aBFu7ll_BFu0ll_L, "aBFu7ll_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_S()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_S");
    static aBFu7ll_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_S(Test_aBFu7ll_BFu0ll_S, "aBFu7ll_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Uc");
    static aBFu7ll_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Uc(Test_aBFu7ll_BFu0ll_Uc, "aBFu7ll_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ui");
    static aBFu7ll_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ui(Test_aBFu7ll_BFu0ll_Ui, "aBFu7ll_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ul");
    static aBFu7ll_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ul(Test_aBFu7ll_BFu0ll_Ul, "aBFu7ll_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Us");
    static aBFu7ll_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Us(Test_aBFu7ll_BFu0ll_Us, "aBFu7ll_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Vp");
    static aBFu7ll_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Vp(Test_aBFu7ll_BFu0ll_Vp, "aBFu7ll_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0s");
    static aBFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s(Test_aBFu7ll_BFu0s, "aBFu7ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0c");
    static aBFu7ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0c(Test_aBFu7ll_BFu0s_BFu0c, "aBFu7ll_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0i");
    static aBFu7ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0i(Test_aBFu7ll_BFu0s_BFu0i, "aBFu7ll_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0ll");
    static aBFu7ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0ll(Test_aBFu7ll_BFu0s_BFu0ll, "aBFu7ll_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0s");
    static aBFu7ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0s(Test_aBFu7ll_BFu0s_BFu0s, "aBFu7ll_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15i");
    static aBFu7ll_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15i(Test_aBFu7ll_BFu0s_BFu15i, "aBFu7ll_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15ll");
    static aBFu7ll_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15ll(Test_aBFu7ll_BFu0s_BFu15ll, "aBFu7ll_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15s");
    static aBFu7ll_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15s(Test_aBFu7ll_BFu0s_BFu15s, "aBFu7ll_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16i");
    static aBFu7ll_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16i(Test_aBFu7ll_BFu0s_BFu16i, "aBFu7ll_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16ll");
    static aBFu7ll_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16ll(Test_aBFu7ll_BFu0s_BFu16ll, "aBFu7ll_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16s");
    static aBFu7ll_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16s(Test_aBFu7ll_BFu0s_BFu16s, "aBFu7ll_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu17i");
    static aBFu7ll_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu17i(Test_aBFu7ll_BFu0s_BFu17i, "aBFu7ll_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu17ll");
    static aBFu7ll_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu17ll(Test_aBFu7ll_BFu0s_BFu17ll, "aBFu7ll_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1c");
    static aBFu7ll_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1c(Test_aBFu7ll_BFu0s_BFu1c, "aBFu7ll_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1i");
    static aBFu7ll_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1i(Test_aBFu7ll_BFu0s_BFu1i, "aBFu7ll_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1ll");
    static aBFu7ll_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1ll(Test_aBFu7ll_BFu0s_BFu1ll, "aBFu7ll_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1s");
    static aBFu7ll_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1s(Test_aBFu7ll_BFu0s_BFu1s, "aBFu7ll_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu31i");
    static aBFu7ll_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu31i(Test_aBFu7ll_BFu0s_BFu31i, "aBFu7ll_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu31ll");
    static aBFu7ll_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu31ll(Test_aBFu7ll_BFu0s_BFu31ll, "aBFu7ll_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu32i");
    static aBFu7ll_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu32i(Test_aBFu7ll_BFu0s_BFu32i, "aBFu7ll_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu32ll");
    static aBFu7ll_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu32ll(Test_aBFu7ll_BFu0s_BFu32ll, "aBFu7ll_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu33");
    static aBFu7ll_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu33(Test_aBFu7ll_BFu0s_BFu33, "aBFu7ll_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7c");
    static aBFu7ll_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7c(Test_aBFu7ll_BFu0s_BFu7c, "aBFu7ll_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7i");
    static aBFu7ll_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7i(Test_aBFu7ll_BFu0s_BFu7i, "aBFu7ll_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7ll");
    static aBFu7ll_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7ll(Test_aBFu7ll_BFu0s_BFu7ll, "aBFu7ll_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7s");
    static aBFu7ll_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7s(Test_aBFu7ll_BFu0s_BFu7s, "aBFu7ll_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8c");
    static aBFu7ll_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8c(Test_aBFu7ll_BFu0s_BFu8c, "aBFu7ll_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8i");
    static aBFu7ll_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8i(Test_aBFu7ll_BFu0s_BFu8i, "aBFu7ll_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8ll");
    static aBFu7ll_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8ll(Test_aBFu7ll_BFu0s_BFu8ll, "aBFu7ll_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8s");
    static aBFu7ll_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8s(Test_aBFu7ll_BFu0s_BFu8s, "aBFu7ll_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9i");
    static aBFu7ll_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9i(Test_aBFu7ll_BFu0s_BFu9i, "aBFu7ll_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9ll");
    static aBFu7ll_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9ll(Test_aBFu7ll_BFu0s_BFu9ll, "aBFu7ll_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9s");
    static aBFu7ll_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9s(Test_aBFu7ll_BFu0s_BFu9s, "aBFu7ll_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_C()
{
  {
    init_simple_test("aBFu7ll_BFu0s_C");
    static aBFu7ll_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_C(Test_aBFu7ll_BFu0s_C, "aBFu7ll_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_D()
{
  {
    init_simple_test("aBFu7ll_BFu0s_D");
    static aBFu7ll_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_D(Test_aBFu7ll_BFu0s_D, "aBFu7ll_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_F()
{
  {
    init_simple_test("aBFu7ll_BFu0s_F");
    static aBFu7ll_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_F(Test_aBFu7ll_BFu0s_F, "aBFu7ll_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_I()
{
  {
    init_simple_test("aBFu7ll_BFu0s_I");
    static aBFu7ll_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_I(Test_aBFu7ll_BFu0s_I, "aBFu7ll_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ip");
    static aBFu7ll_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ip(Test_aBFu7ll_BFu0s_Ip, "aBFu7ll_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_L()
{
  {
    init_simple_test("aBFu7ll_BFu0s_L");
    static aBFu7ll_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_L(Test_aBFu7ll_BFu0s_L, "aBFu7ll_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_S()
{
  {
    init_simple_test("aBFu7ll_BFu0s_S");
    static aBFu7ll_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_S(Test_aBFu7ll_BFu0s_S, "aBFu7ll_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Uc");
    static aBFu7ll_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Uc(Test_aBFu7ll_BFu0s_Uc, "aBFu7ll_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ui");
    static aBFu7ll_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ui(Test_aBFu7ll_BFu0s_Ui, "aBFu7ll_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ul");
    static aBFu7ll_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ul(Test_aBFu7ll_BFu0s_Ul, "aBFu7ll_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Us");
    static aBFu7ll_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Us(Test_aBFu7ll_BFu0s_Us, "aBFu7ll_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Vp");
    static aBFu7ll_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Vp(Test_aBFu7ll_BFu0s_Vp, "aBFu7ll_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0c");
    static aBFu7ll_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0c(Test_aBFu7ll_BFu15i_BFu0c, "aBFu7ll_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0i");
    static aBFu7ll_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0i(Test_aBFu7ll_BFu15i_BFu0i, "aBFu7ll_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0ll");
    static aBFu7ll_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0ll(Test_aBFu7ll_BFu15i_BFu0ll, "aBFu7ll_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0s");
    static aBFu7ll_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0s(Test_aBFu7ll_BFu15i_BFu0s, "aBFu7ll_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0c");
    static aBFu7ll_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0c(Test_aBFu7ll_BFu15ll_BFu0c, "aBFu7ll_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0i");
    static aBFu7ll_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0i(Test_aBFu7ll_BFu15ll_BFu0i, "aBFu7ll_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0ll");
    static aBFu7ll_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0ll(Test_aBFu7ll_BFu15ll_BFu0ll, "aBFu7ll_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0s");
    static aBFu7ll_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0s(Test_aBFu7ll_BFu15ll_BFu0s, "aBFu7ll_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0c");
    static aBFu7ll_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0c(Test_aBFu7ll_BFu15s_BFu0c, "aBFu7ll_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0i");
    static aBFu7ll_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0i(Test_aBFu7ll_BFu15s_BFu0i, "aBFu7ll_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0ll");
    static aBFu7ll_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0ll(Test_aBFu7ll_BFu15s_BFu0ll, "aBFu7ll_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0s");
    static aBFu7ll_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0s(Test_aBFu7ll_BFu15s_BFu0s, "aBFu7ll_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0c");
    static aBFu7ll_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0c(Test_aBFu7ll_BFu16i_BFu0c, "aBFu7ll_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0i");
    static aBFu7ll_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0i(Test_aBFu7ll_BFu16i_BFu0i, "aBFu7ll_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0ll");
    static aBFu7ll_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0ll(Test_aBFu7ll_BFu16i_BFu0ll, "aBFu7ll_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0s");
    static aBFu7ll_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0s(Test_aBFu7ll_BFu16i_BFu0s, "aBFu7ll_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0c");
    static aBFu7ll_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0c(Test_aBFu7ll_BFu16ll_BFu0c, "aBFu7ll_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0i");
    static aBFu7ll_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0i(Test_aBFu7ll_BFu16ll_BFu0i, "aBFu7ll_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0ll");
    static aBFu7ll_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0ll(Test_aBFu7ll_BFu16ll_BFu0ll, "aBFu7ll_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0s");
    static aBFu7ll_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0s(Test_aBFu7ll_BFu16ll_BFu0s, "aBFu7ll_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0c");
    static aBFu7ll_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0c(Test_aBFu7ll_BFu16s_BFu0c, "aBFu7ll_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0i");
    static aBFu7ll_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0i(Test_aBFu7ll_BFu16s_BFu0i, "aBFu7ll_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0ll");
    static aBFu7ll_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0ll(Test_aBFu7ll_BFu16s_BFu0ll, "aBFu7ll_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0s");
    static aBFu7ll_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0s(Test_aBFu7ll_BFu16s_BFu0s, "aBFu7ll_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0c");
    static aBFu7ll_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0c(Test_aBFu7ll_BFu17i_BFu0c, "aBFu7ll_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0i");
    static aBFu7ll_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0i(Test_aBFu7ll_BFu17i_BFu0i, "aBFu7ll_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0ll");
    static aBFu7ll_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0ll(Test_aBFu7ll_BFu17i_BFu0ll, "aBFu7ll_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0s");
    static aBFu7ll_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0s(Test_aBFu7ll_BFu17i_BFu0s, "aBFu7ll_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0c");
    static aBFu7ll_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0c(Test_aBFu7ll_BFu17ll_BFu0c, "aBFu7ll_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0i");
    static aBFu7ll_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0i(Test_aBFu7ll_BFu17ll_BFu0i, "aBFu7ll_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0ll");
    static aBFu7ll_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0ll(Test_aBFu7ll_BFu17ll_BFu0ll, "aBFu7ll_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0s");
    static aBFu7ll_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0s(Test_aBFu7ll_BFu17ll_BFu0s, "aBFu7ll_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0c");
    static aBFu7ll_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0c(Test_aBFu7ll_BFu1c_BFu0c, "aBFu7ll_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0i");
    static aBFu7ll_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0i(Test_aBFu7ll_BFu1c_BFu0i, "aBFu7ll_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0ll");
    static aBFu7ll_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0ll(Test_aBFu7ll_BFu1c_BFu0ll, "aBFu7ll_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0s");
    static aBFu7ll_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0s(Test_aBFu7ll_BFu1c_BFu0s, "aBFu7ll_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0c");
    static aBFu7ll_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0c(Test_aBFu7ll_BFu1i_BFu0c, "aBFu7ll_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0i");
    static aBFu7ll_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0i(Test_aBFu7ll_BFu1i_BFu0i, "aBFu7ll_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0ll");
    static aBFu7ll_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0ll(Test_aBFu7ll_BFu1i_BFu0ll, "aBFu7ll_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0s");
    static aBFu7ll_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0s(Test_aBFu7ll_BFu1i_BFu0s, "aBFu7ll_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0c");
    static aBFu7ll_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0c(Test_aBFu7ll_BFu1ll_BFu0c, "aBFu7ll_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0i");
    static aBFu7ll_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0i(Test_aBFu7ll_BFu1ll_BFu0i, "aBFu7ll_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0ll");
    static aBFu7ll_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0ll(Test_aBFu7ll_BFu1ll_BFu0ll, "aBFu7ll_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0s");
    static aBFu7ll_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0s(Test_aBFu7ll_BFu1ll_BFu0s, "aBFu7ll_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0c");
    static aBFu7ll_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0c(Test_aBFu7ll_BFu1s_BFu0c, "aBFu7ll_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0i");
    static aBFu7ll_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0i(Test_aBFu7ll_BFu1s_BFu0i, "aBFu7ll_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0ll");
    static aBFu7ll_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0ll(Test_aBFu7ll_BFu1s_BFu0ll, "aBFu7ll_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0s");
    static aBFu7ll_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0s(Test_aBFu7ll_BFu1s_BFu0s, "aBFu7ll_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0c");
    static aBFu7ll_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0c(Test_aBFu7ll_BFu31i_BFu0c, "aBFu7ll_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0i");
    static aBFu7ll_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0i(Test_aBFu7ll_BFu31i_BFu0i, "aBFu7ll_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0ll");
    static aBFu7ll_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0ll(Test_aBFu7ll_BFu31i_BFu0ll, "aBFu7ll_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0s");
    static aBFu7ll_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0s(Test_aBFu7ll_BFu31i_BFu0s, "aBFu7ll_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0c");
    static aBFu7ll_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0c(Test_aBFu7ll_BFu31ll_BFu0c, "aBFu7ll_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0i");
    static aBFu7ll_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0i(Test_aBFu7ll_BFu31ll_BFu0i, "aBFu7ll_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0ll");
    static aBFu7ll_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0ll(Test_aBFu7ll_BFu31ll_BFu0ll, "aBFu7ll_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0s");
    static aBFu7ll_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0s(Test_aBFu7ll_BFu31ll_BFu0s, "aBFu7ll_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0c");
    static aBFu7ll_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0c(Test_aBFu7ll_BFu32i_BFu0c, "aBFu7ll_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0i");
    static aBFu7ll_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0i(Test_aBFu7ll_BFu32i_BFu0i, "aBFu7ll_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0ll");
    static aBFu7ll_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0ll(Test_aBFu7ll_BFu32i_BFu0ll, "aBFu7ll_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0s");
    static aBFu7ll_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0s(Test_aBFu7ll_BFu32i_BFu0s, "aBFu7ll_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0c");
    static aBFu7ll_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0c(Test_aBFu7ll_BFu32ll_BFu0c, "aBFu7ll_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0i");
    static aBFu7ll_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0i(Test_aBFu7ll_BFu32ll_BFu0i, "aBFu7ll_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0ll");
    static aBFu7ll_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0ll(Test_aBFu7ll_BFu32ll_BFu0ll, "aBFu7ll_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0s");
    static aBFu7ll_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0s(Test_aBFu7ll_BFu32ll_BFu0s, "aBFu7ll_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0c");
    static aBFu7ll_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0c(Test_aBFu7ll_BFu33_BFu0c, "aBFu7ll_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0i");
    static aBFu7ll_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0i(Test_aBFu7ll_BFu33_BFu0i, "aBFu7ll_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0ll");
    static aBFu7ll_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0ll(Test_aBFu7ll_BFu33_BFu0ll, "aBFu7ll_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0s");
    static aBFu7ll_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0s(Test_aBFu7ll_BFu33_BFu0s, "aBFu7ll_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0c");
    static aBFu7ll_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0c(Test_aBFu7ll_BFu7c_BFu0c, "aBFu7ll_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0i");
    static aBFu7ll_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0i(Test_aBFu7ll_BFu7c_BFu0i, "aBFu7ll_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0ll");
    static aBFu7ll_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0ll(Test_aBFu7ll_BFu7c_BFu0ll, "aBFu7ll_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0s");
    static aBFu7ll_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0s(Test_aBFu7ll_BFu7c_BFu0s, "aBFu7ll_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0c");
    static aBFu7ll_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0c(Test_aBFu7ll_BFu7i_BFu0c, "aBFu7ll_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0i");
    static aBFu7ll_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0i(Test_aBFu7ll_BFu7i_BFu0i, "aBFu7ll_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0ll");
    static aBFu7ll_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0ll(Test_aBFu7ll_BFu7i_BFu0ll, "aBFu7ll_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0s");
    static aBFu7ll_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0s(Test_aBFu7ll_BFu7i_BFu0s, "aBFu7ll_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0c");
    static aBFu7ll_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0c(Test_aBFu7ll_BFu7ll_BFu0c, "aBFu7ll_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0i");
    static aBFu7ll_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0i(Test_aBFu7ll_BFu7ll_BFu0i, "aBFu7ll_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0ll");
    static aBFu7ll_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0ll(Test_aBFu7ll_BFu7ll_BFu0ll, "aBFu7ll_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0s");
    static aBFu7ll_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0s(Test_aBFu7ll_BFu7ll_BFu0s, "aBFu7ll_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0c");
    static aBFu7ll_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0c(Test_aBFu7ll_BFu7s_BFu0c, "aBFu7ll_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0i");
    static aBFu7ll_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0i(Test_aBFu7ll_BFu7s_BFu0i, "aBFu7ll_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0ll");
    static aBFu7ll_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0ll(Test_aBFu7ll_BFu7s_BFu0ll, "aBFu7ll_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0s");
    static aBFu7ll_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0s(Test_aBFu7ll_BFu7s_BFu0s, "aBFu7ll_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0c");
    static aBFu7ll_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0c(Test_aBFu7ll_BFu8c_BFu0c, "aBFu7ll_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0i");
    static aBFu7ll_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0i(Test_aBFu7ll_BFu8c_BFu0i, "aBFu7ll_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0ll");
    static aBFu7ll_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0ll(Test_aBFu7ll_BFu8c_BFu0ll, "aBFu7ll_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0s");
    static aBFu7ll_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0s(Test_aBFu7ll_BFu8c_BFu0s, "aBFu7ll_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0c");
    static aBFu7ll_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0c(Test_aBFu7ll_BFu8i_BFu0c, "aBFu7ll_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0i");
    static aBFu7ll_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0i(Test_aBFu7ll_BFu8i_BFu0i, "aBFu7ll_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0ll");
    static aBFu7ll_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0ll(Test_aBFu7ll_BFu8i_BFu0ll, "aBFu7ll_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0s");
    static aBFu7ll_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0s(Test_aBFu7ll_BFu8i_BFu0s, "aBFu7ll_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0c");
    static aBFu7ll_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0c(Test_aBFu7ll_BFu8ll_BFu0c, "aBFu7ll_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0i");
    static aBFu7ll_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0i(Test_aBFu7ll_BFu8ll_BFu0i, "aBFu7ll_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0ll");
    static aBFu7ll_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0ll(Test_aBFu7ll_BFu8ll_BFu0ll, "aBFu7ll_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0s");
    static aBFu7ll_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0s(Test_aBFu7ll_BFu8ll_BFu0s, "aBFu7ll_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0c");
    static aBFu7ll_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0c(Test_aBFu7ll_BFu8s_BFu0c, "aBFu7ll_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0i");
    static aBFu7ll_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0i(Test_aBFu7ll_BFu8s_BFu0i, "aBFu7ll_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0ll");
    static aBFu7ll_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0ll(Test_aBFu7ll_BFu8s_BFu0ll, "aBFu7ll_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0s");
    static aBFu7ll_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0s(Test_aBFu7ll_BFu8s_BFu0s, "aBFu7ll_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0c");
    static aBFu7ll_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0c(Test_aBFu7ll_BFu9i_BFu0c, "aBFu7ll_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0i");
    static aBFu7ll_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0i(Test_aBFu7ll_BFu9i_BFu0i, "aBFu7ll_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0ll");
    static aBFu7ll_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0ll(Test_aBFu7ll_BFu9i_BFu0ll, "aBFu7ll_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0s");
    static aBFu7ll_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0s(Test_aBFu7ll_BFu9i_BFu0s, "aBFu7ll_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0c");
    static aBFu7ll_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0c(Test_aBFu7ll_BFu9ll_BFu0c, "aBFu7ll_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0i");
    static aBFu7ll_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0i(Test_aBFu7ll_BFu9ll_BFu0i, "aBFu7ll_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0ll");
    static aBFu7ll_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0ll(Test_aBFu7ll_BFu9ll_BFu0ll, "aBFu7ll_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0s");
    static aBFu7ll_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0s(Test_aBFu7ll_BFu9ll_BFu0s, "aBFu7ll_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0c");
    static aBFu7ll_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0c(Test_aBFu7ll_BFu9s_BFu0c, "aBFu7ll_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0i");
    static aBFu7ll_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0i(Test_aBFu7ll_BFu9s_BFu0i, "aBFu7ll_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0ll");
    static aBFu7ll_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0ll(Test_aBFu7ll_BFu9s_BFu0ll, "aBFu7ll_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0s");
    static aBFu7ll_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0s(Test_aBFu7ll_BFu9s_BFu0s, "aBFu7ll_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0c()
{
  {
    init_simple_test("aBFu7ll_C_BFu0c");
    static aBFu7ll_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0c(Test_aBFu7ll_C_BFu0c, "aBFu7ll_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0i()
{
  {
    init_simple_test("aBFu7ll_C_BFu0i");
    static aBFu7ll_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0i(Test_aBFu7ll_C_BFu0i, "aBFu7ll_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_C_BFu0ll");
    static aBFu7ll_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0ll(Test_aBFu7ll_C_BFu0ll, "aBFu7ll_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0s()
{
  {
    init_simple_test("aBFu7ll_C_BFu0s");
    static aBFu7ll_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0s(Test_aBFu7ll_C_BFu0s, "aBFu7ll_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0c()
{
  {
    init_simple_test("aBFu7ll_D_BFu0c");
    static aBFu7ll_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0c(Test_aBFu7ll_D_BFu0c, "aBFu7ll_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0i()
{
  {
    init_simple_test("aBFu7ll_D_BFu0i");
    static aBFu7ll_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0i(Test_aBFu7ll_D_BFu0i, "aBFu7ll_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_D_BFu0ll");
    static aBFu7ll_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0ll(Test_aBFu7ll_D_BFu0ll, "aBFu7ll_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0s()
{
  {
    init_simple_test("aBFu7ll_D_BFu0s");
    static aBFu7ll_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0s(Test_aBFu7ll_D_BFu0s, "aBFu7ll_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0c()
{
  {
    init_simple_test("aBFu7ll_F_BFu0c");
    static aBFu7ll_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0c(Test_aBFu7ll_F_BFu0c, "aBFu7ll_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0i()
{
  {
    init_simple_test("aBFu7ll_F_BFu0i");
    static aBFu7ll_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0i(Test_aBFu7ll_F_BFu0i, "aBFu7ll_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_F_BFu0ll");
    static aBFu7ll_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0ll(Test_aBFu7ll_F_BFu0ll, "aBFu7ll_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0s()
{
  {
    init_simple_test("aBFu7ll_F_BFu0s");
    static aBFu7ll_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0s(Test_aBFu7ll_F_BFu0s, "aBFu7ll_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0c()
{
  {
    init_simple_test("aBFu7ll_I_BFu0c");
    static aBFu7ll_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0c(Test_aBFu7ll_I_BFu0c, "aBFu7ll_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0i()
{
  {
    init_simple_test("aBFu7ll_I_BFu0i");
    static aBFu7ll_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0i(Test_aBFu7ll_I_BFu0i, "aBFu7ll_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_I_BFu0ll");
    static aBFu7ll_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0ll(Test_aBFu7ll_I_BFu0ll, "aBFu7ll_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0s()
{
  {
    init_simple_test("aBFu7ll_I_BFu0s");
    static aBFu7ll_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0s(Test_aBFu7ll_I_BFu0s, "aBFu7ll_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0c");
    static aBFu7ll_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0c(Test_aBFu7ll_Ip_BFu0c, "aBFu7ll_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0i");
    static aBFu7ll_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0i(Test_aBFu7ll_Ip_BFu0i, "aBFu7ll_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0ll");
    static aBFu7ll_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0ll(Test_aBFu7ll_Ip_BFu0ll, "aBFu7ll_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0s");
    static aBFu7ll_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0s(Test_aBFu7ll_Ip_BFu0s, "aBFu7ll_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0c()
{
  {
    init_simple_test("aBFu7ll_L_BFu0c");
    static aBFu7ll_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0c(Test_aBFu7ll_L_BFu0c, "aBFu7ll_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0i()
{
  {
    init_simple_test("aBFu7ll_L_BFu0i");
    static aBFu7ll_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0i(Test_aBFu7ll_L_BFu0i, "aBFu7ll_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_L_BFu0ll");
    static aBFu7ll_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0ll(Test_aBFu7ll_L_BFu0ll, "aBFu7ll_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0s()
{
  {
    init_simple_test("aBFu7ll_L_BFu0s");
    static aBFu7ll_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0s(Test_aBFu7ll_L_BFu0s, "aBFu7ll_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0c()
{
  {
    init_simple_test("aBFu7ll_S_BFu0c");
    static aBFu7ll_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0c(Test_aBFu7ll_S_BFu0c, "aBFu7ll_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0i()
{
  {
    init_simple_test("aBFu7ll_S_BFu0i");
    static aBFu7ll_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0i(Test_aBFu7ll_S_BFu0i, "aBFu7ll_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_S_BFu0ll");
    static aBFu7ll_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0ll(Test_aBFu7ll_S_BFu0ll, "aBFu7ll_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0s()
{
  {
    init_simple_test("aBFu7ll_S_BFu0s");
    static aBFu7ll_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0s(Test_aBFu7ll_S_BFu0s, "aBFu7ll_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0c");
    static aBFu7ll_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0c(Test_aBFu7ll_Uc_BFu0c, "aBFu7ll_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0i");
    static aBFu7ll_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0i(Test_aBFu7ll_Uc_BFu0i, "aBFu7ll_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0ll");
    static aBFu7ll_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0ll(Test_aBFu7ll_Uc_BFu0ll, "aBFu7ll_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0s");
    static aBFu7ll_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0s(Test_aBFu7ll_Uc_BFu0s, "aBFu7ll_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0c");
    static aBFu7ll_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0c(Test_aBFu7ll_Ui_BFu0c, "aBFu7ll_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0i");
    static aBFu7ll_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0i(Test_aBFu7ll_Ui_BFu0i, "aBFu7ll_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0ll");
    static aBFu7ll_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0ll(Test_aBFu7ll_Ui_BFu0ll, "aBFu7ll_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0s");
    static aBFu7ll_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0s(Test_aBFu7ll_Ui_BFu0s, "aBFu7ll_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0c");
    static aBFu7ll_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0c(Test_aBFu7ll_Ul_BFu0c, "aBFu7ll_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0i");
    static aBFu7ll_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0i(Test_aBFu7ll_Ul_BFu0i, "aBFu7ll_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0ll");
    static aBFu7ll_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0ll(Test_aBFu7ll_Ul_BFu0ll, "aBFu7ll_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0s");
    static aBFu7ll_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0s(Test_aBFu7ll_Ul_BFu0s, "aBFu7ll_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0c");
    static aBFu7ll_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0c(Test_aBFu7ll_Us_BFu0c, "aBFu7ll_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0i");
    static aBFu7ll_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0i(Test_aBFu7ll_Us_BFu0i, "aBFu7ll_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0ll");
    static aBFu7ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0ll(Test_aBFu7ll_Us_BFu0ll, "aBFu7ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0s");
    static aBFu7ll_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0s(Test_aBFu7ll_Us_BFu0s, "aBFu7ll_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0c");
    static aBFu7ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0c(Test_aBFu7ll_Vp_BFu0c, "aBFu7ll_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0i");
    static aBFu7ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0i(Test_aBFu7ll_Vp_BFu0i, "aBFu7ll_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0ll");
    static aBFu7ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0ll(Test_aBFu7ll_Vp_BFu0ll, "aBFu7ll_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0s");
    static aBFu7ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0s(Test_aBFu7ll_Vp_BFu0s, "aBFu7ll_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0c");
    static aBFu7s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c(Test_aBFu7s_BFu0c, "aBFu7s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0c");
    static aBFu7s_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0c(Test_aBFu7s_BFu0c_BFu0c, "aBFu7s_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0i");
    static aBFu7s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0i(Test_aBFu7s_BFu0c_BFu0i, "aBFu7s_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0ll");
    static aBFu7s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0ll(Test_aBFu7s_BFu0c_BFu0ll, "aBFu7s_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0s");
    static aBFu7s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0s(Test_aBFu7s_BFu0c_BFu0s, "aBFu7s_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15i");
    static aBFu7s_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15i(Test_aBFu7s_BFu0c_BFu15i, "aBFu7s_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15ll");
    static aBFu7s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15ll(Test_aBFu7s_BFu0c_BFu15ll, "aBFu7s_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15s");
    static aBFu7s_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15s(Test_aBFu7s_BFu0c_BFu15s, "aBFu7s_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16i");
    static aBFu7s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16i(Test_aBFu7s_BFu0c_BFu16i, "aBFu7s_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16ll");
    static aBFu7s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16ll(Test_aBFu7s_BFu0c_BFu16ll, "aBFu7s_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16s");
    static aBFu7s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16s(Test_aBFu7s_BFu0c_BFu16s, "aBFu7s_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu17i");
    static aBFu7s_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu17i(Test_aBFu7s_BFu0c_BFu17i, "aBFu7s_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu17ll");
    static aBFu7s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu17ll(Test_aBFu7s_BFu0c_BFu17ll, "aBFu7s_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1c");
    static aBFu7s_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1c(Test_aBFu7s_BFu0c_BFu1c, "aBFu7s_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1i");
    static aBFu7s_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1i(Test_aBFu7s_BFu0c_BFu1i, "aBFu7s_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1ll");
    static aBFu7s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1ll(Test_aBFu7s_BFu0c_BFu1ll, "aBFu7s_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1s");
    static aBFu7s_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1s(Test_aBFu7s_BFu0c_BFu1s, "aBFu7s_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu31i");
    static aBFu7s_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu31i(Test_aBFu7s_BFu0c_BFu31i, "aBFu7s_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu31ll");
    static aBFu7s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu31ll(Test_aBFu7s_BFu0c_BFu31ll, "aBFu7s_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu32i");
    static aBFu7s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu32i(Test_aBFu7s_BFu0c_BFu32i, "aBFu7s_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu32ll");
    static aBFu7s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu32ll(Test_aBFu7s_BFu0c_BFu32ll, "aBFu7s_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu33");
    static aBFu7s_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu33(Test_aBFu7s_BFu0c_BFu33, "aBFu7s_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7c");
    static aBFu7s_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7c(Test_aBFu7s_BFu0c_BFu7c, "aBFu7s_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7i");
    static aBFu7s_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7i(Test_aBFu7s_BFu0c_BFu7i, "aBFu7s_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7ll");
    static aBFu7s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7ll(Test_aBFu7s_BFu0c_BFu7ll, "aBFu7s_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7s");
    static aBFu7s_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7s(Test_aBFu7s_BFu0c_BFu7s, "aBFu7s_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8c");
    static aBFu7s_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8c(Test_aBFu7s_BFu0c_BFu8c, "aBFu7s_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8i");
    static aBFu7s_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8i(Test_aBFu7s_BFu0c_BFu8i, "aBFu7s_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8ll");
    static aBFu7s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8ll(Test_aBFu7s_BFu0c_BFu8ll, "aBFu7s_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8s");
    static aBFu7s_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8s(Test_aBFu7s_BFu0c_BFu8s, "aBFu7s_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9i");
    static aBFu7s_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9i(Test_aBFu7s_BFu0c_BFu9i, "aBFu7s_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9ll");
    static aBFu7s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9ll(Test_aBFu7s_BFu0c_BFu9ll, "aBFu7s_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9s");
    static aBFu7s_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9s(Test_aBFu7s_BFu0c_BFu9s, "aBFu7s_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_C()
{
  {
    init_simple_test("aBFu7s_BFu0c_C");
    static aBFu7s_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_C(Test_aBFu7s_BFu0c_C, "aBFu7s_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_D()
{
  {
    init_simple_test("aBFu7s_BFu0c_D");
    static aBFu7s_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_D(Test_aBFu7s_BFu0c_D, "aBFu7s_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_F()
{
  {
    init_simple_test("aBFu7s_BFu0c_F");
    static aBFu7s_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_F(Test_aBFu7s_BFu0c_F, "aBFu7s_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_I()
{
  {
    init_simple_test("aBFu7s_BFu0c_I");
    static aBFu7s_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_I(Test_aBFu7s_BFu0c_I, "aBFu7s_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ip");
    static aBFu7s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ip(Test_aBFu7s_BFu0c_Ip, "aBFu7s_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_L()
{
  {
    init_simple_test("aBFu7s_BFu0c_L");
    static aBFu7s_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_L(Test_aBFu7s_BFu0c_L, "aBFu7s_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_S()
{
  {
    init_simple_test("aBFu7s_BFu0c_S");
    static aBFu7s_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_S(Test_aBFu7s_BFu0c_S, "aBFu7s_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0c_Uc");
    static aBFu7s_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Uc(Test_aBFu7s_BFu0c_Uc, "aBFu7s_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ui");
    static aBFu7s_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ui(Test_aBFu7s_BFu0c_Ui, "aBFu7s_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ul");
    static aBFu7s_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ul(Test_aBFu7s_BFu0c_Ul, "aBFu7s_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Us()
{
  {
    init_simple_test("aBFu7s_BFu0c_Us");
    static aBFu7s_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Us(Test_aBFu7s_BFu0c_Us, "aBFu7s_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0c_Vp");
    static aBFu7s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Vp(Test_aBFu7s_BFu0c_Vp, "aBFu7s_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0i");
    static aBFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i(Test_aBFu7s_BFu0i, "aBFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0c");
    static aBFu7s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0c(Test_aBFu7s_BFu0i_BFu0c, "aBFu7s_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0i");
    static aBFu7s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0i(Test_aBFu7s_BFu0i_BFu0i, "aBFu7s_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0ll");
    static aBFu7s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0ll(Test_aBFu7s_BFu0i_BFu0ll, "aBFu7s_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0s");
    static aBFu7s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0s(Test_aBFu7s_BFu0i_BFu0s, "aBFu7s_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15i");
    static aBFu7s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15i(Test_aBFu7s_BFu0i_BFu15i, "aBFu7s_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15ll");
    static aBFu7s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15ll(Test_aBFu7s_BFu0i_BFu15ll, "aBFu7s_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15s");
    static aBFu7s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15s(Test_aBFu7s_BFu0i_BFu15s, "aBFu7s_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16i");
    static aBFu7s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16i(Test_aBFu7s_BFu0i_BFu16i, "aBFu7s_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16ll");
    static aBFu7s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16ll(Test_aBFu7s_BFu0i_BFu16ll, "aBFu7s_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16s");
    static aBFu7s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16s(Test_aBFu7s_BFu0i_BFu16s, "aBFu7s_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu17i");
    static aBFu7s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu17i(Test_aBFu7s_BFu0i_BFu17i, "aBFu7s_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu17ll");
    static aBFu7s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu17ll(Test_aBFu7s_BFu0i_BFu17ll, "aBFu7s_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1c");
    static aBFu7s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1c(Test_aBFu7s_BFu0i_BFu1c, "aBFu7s_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1i");
    static aBFu7s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1i(Test_aBFu7s_BFu0i_BFu1i, "aBFu7s_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1ll");
    static aBFu7s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1ll(Test_aBFu7s_BFu0i_BFu1ll, "aBFu7s_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1s");
    static aBFu7s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1s(Test_aBFu7s_BFu0i_BFu1s, "aBFu7s_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu31i");
    static aBFu7s_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu31i(Test_aBFu7s_BFu0i_BFu31i, "aBFu7s_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu31ll");
    static aBFu7s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu31ll(Test_aBFu7s_BFu0i_BFu31ll, "aBFu7s_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu32i");
    static aBFu7s_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu32i(Test_aBFu7s_BFu0i_BFu32i, "aBFu7s_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu32ll");
    static aBFu7s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu32ll(Test_aBFu7s_BFu0i_BFu32ll, "aBFu7s_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu33");
    static aBFu7s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7s_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu33(Test_aBFu7s_BFu0i_BFu33, "aBFu7s_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7c");
    static aBFu7s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7c(Test_aBFu7s_BFu0i_BFu7c, "aBFu7s_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7i");
    static aBFu7s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7i(Test_aBFu7s_BFu0i_BFu7i, "aBFu7s_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7ll");
    static aBFu7s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7ll(Test_aBFu7s_BFu0i_BFu7ll, "aBFu7s_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7s");
    static aBFu7s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7s(Test_aBFu7s_BFu0i_BFu7s, "aBFu7s_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8c");
    static aBFu7s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8c(Test_aBFu7s_BFu0i_BFu8c, "aBFu7s_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8i");
    static aBFu7s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8i(Test_aBFu7s_BFu0i_BFu8i, "aBFu7s_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8ll");
    static aBFu7s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8ll(Test_aBFu7s_BFu0i_BFu8ll, "aBFu7s_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8s");
    static aBFu7s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8s(Test_aBFu7s_BFu0i_BFu8s, "aBFu7s_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9i");
    static aBFu7s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9i(Test_aBFu7s_BFu0i_BFu9i, "aBFu7s_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9ll");
    static aBFu7s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9ll(Test_aBFu7s_BFu0i_BFu9ll, "aBFu7s_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9s");
    static aBFu7s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9s(Test_aBFu7s_BFu0i_BFu9s, "aBFu7s_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_C()
{
  {
    init_simple_test("aBFu7s_BFu0i_C");
    static aBFu7s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_C(Test_aBFu7s_BFu0i_C, "aBFu7s_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_D()
{
  {
    init_simple_test("aBFu7s_BFu0i_D");
    static aBFu7s_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_D(Test_aBFu7s_BFu0i_D, "aBFu7s_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_F()
{
  {
    init_simple_test("aBFu7s_BFu0i_F");
    static aBFu7s_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_F(Test_aBFu7s_BFu0i_F, "aBFu7s_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_I()
{
  {
    init_simple_test("aBFu7s_BFu0i_I");
    static aBFu7s_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_I(Test_aBFu7s_BFu0i_I, "aBFu7s_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ip");
    static aBFu7s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ip(Test_aBFu7s_BFu0i_Ip, "aBFu7s_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_L()
{
  {
    init_simple_test("aBFu7s_BFu0i_L");
    static aBFu7s_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_L(Test_aBFu7s_BFu0i_L, "aBFu7s_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_S()
{
  {
    init_simple_test("aBFu7s_BFu0i_S");
    static aBFu7s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_S(Test_aBFu7s_BFu0i_S, "aBFu7s_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0i_Uc");
    static aBFu7s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Uc(Test_aBFu7s_BFu0i_Uc, "aBFu7s_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ui");
    static aBFu7s_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ui(Test_aBFu7s_BFu0i_Ui, "aBFu7s_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ul");
    static aBFu7s_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ul(Test_aBFu7s_BFu0i_Ul, "aBFu7s_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Us()
{
  {
    init_simple_test("aBFu7s_BFu0i_Us");
    static aBFu7s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Us(Test_aBFu7s_BFu0i_Us, "aBFu7s_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0i_Vp");
    static aBFu7s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Vp(Test_aBFu7s_BFu0i_Vp, "aBFu7s_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll");
    static aBFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll(Test_aBFu7s_BFu0ll, "aBFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0c");
    static aBFu7s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0c(Test_aBFu7s_BFu0ll_BFu0c, "aBFu7s_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0i");
    static aBFu7s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0i(Test_aBFu7s_BFu0ll_BFu0i, "aBFu7s_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0ll");
    static aBFu7s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0ll(Test_aBFu7s_BFu0ll_BFu0ll, "aBFu7s_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0s");
    static aBFu7s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0s(Test_aBFu7s_BFu0ll_BFu0s, "aBFu7s_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15i");
    static aBFu7s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15i(Test_aBFu7s_BFu0ll_BFu15i, "aBFu7s_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15ll");
    static aBFu7s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15ll(Test_aBFu7s_BFu0ll_BFu15ll, "aBFu7s_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15s");
    static aBFu7s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15s(Test_aBFu7s_BFu0ll_BFu15s, "aBFu7s_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16i");
    static aBFu7s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16i(Test_aBFu7s_BFu0ll_BFu16i, "aBFu7s_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16ll");
    static aBFu7s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16ll(Test_aBFu7s_BFu0ll_BFu16ll, "aBFu7s_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16s");
    static aBFu7s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16s(Test_aBFu7s_BFu0ll_BFu16s, "aBFu7s_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu17i");
    static aBFu7s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu17i(Test_aBFu7s_BFu0ll_BFu17i, "aBFu7s_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu17ll");
    static aBFu7s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu17ll(Test_aBFu7s_BFu0ll_BFu17ll, "aBFu7s_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1c");
    static aBFu7s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1c(Test_aBFu7s_BFu0ll_BFu1c, "aBFu7s_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1i");
    static aBFu7s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1i(Test_aBFu7s_BFu0ll_BFu1i, "aBFu7s_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1ll");
    static aBFu7s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1ll(Test_aBFu7s_BFu0ll_BFu1ll, "aBFu7s_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1s");
    static aBFu7s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1s(Test_aBFu7s_BFu0ll_BFu1s, "aBFu7s_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu31i");
    static aBFu7s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu31i(Test_aBFu7s_BFu0ll_BFu31i, "aBFu7s_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu31ll");
    static aBFu7s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu31ll(Test_aBFu7s_BFu0ll_BFu31ll, "aBFu7s_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu32i");
    static aBFu7s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu32i(Test_aBFu7s_BFu0ll_BFu32i, "aBFu7s_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu32ll");
    static aBFu7s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu32ll(Test_aBFu7s_BFu0ll_BFu32ll, "aBFu7s_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu33");
    static aBFu7s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7s_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu33(Test_aBFu7s_BFu0ll_BFu33, "aBFu7s_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7c");
    static aBFu7s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7c(Test_aBFu7s_BFu0ll_BFu7c, "aBFu7s_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7i");
    static aBFu7s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7i(Test_aBFu7s_BFu0ll_BFu7i, "aBFu7s_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7ll");
    static aBFu7s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7ll(Test_aBFu7s_BFu0ll_BFu7ll, "aBFu7s_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7s");
    static aBFu7s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7s(Test_aBFu7s_BFu0ll_BFu7s, "aBFu7s_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8c");
    static aBFu7s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8c(Test_aBFu7s_BFu0ll_BFu8c, "aBFu7s_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8i");
    static aBFu7s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8i(Test_aBFu7s_BFu0ll_BFu8i, "aBFu7s_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8ll");
    static aBFu7s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8ll(Test_aBFu7s_BFu0ll_BFu8ll, "aBFu7s_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8s");
    static aBFu7s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8s(Test_aBFu7s_BFu0ll_BFu8s, "aBFu7s_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9i");
    static aBFu7s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9i(Test_aBFu7s_BFu0ll_BFu9i, "aBFu7s_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9ll");
    static aBFu7s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9ll(Test_aBFu7s_BFu0ll_BFu9ll, "aBFu7s_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9s");
    static aBFu7s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9s(Test_aBFu7s_BFu0ll_BFu9s, "aBFu7s_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_C()
{
  {
    init_simple_test("aBFu7s_BFu0ll_C");
    static aBFu7s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_C(Test_aBFu7s_BFu0ll_C, "aBFu7s_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_D()
{
  {
    init_simple_test("aBFu7s_BFu0ll_D");
    static aBFu7s_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_D(Test_aBFu7s_BFu0ll_D, "aBFu7s_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_F()
{
  {
    init_simple_test("aBFu7s_BFu0ll_F");
    static aBFu7s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_F(Test_aBFu7s_BFu0ll_F, "aBFu7s_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_I()
{
  {
    init_simple_test("aBFu7s_BFu0ll_I");
    static aBFu7s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_I(Test_aBFu7s_BFu0ll_I, "aBFu7s_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ip");
    static aBFu7s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ip(Test_aBFu7s_BFu0ll_Ip, "aBFu7s_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_L()
{
  {
    init_simple_test("aBFu7s_BFu0ll_L");
    static aBFu7s_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_L(Test_aBFu7s_BFu0ll_L, "aBFu7s_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_S()
{
  {
    init_simple_test("aBFu7s_BFu0ll_S");
    static aBFu7s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_S(Test_aBFu7s_BFu0ll_S, "aBFu7s_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Uc");
    static aBFu7s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Uc(Test_aBFu7s_BFu0ll_Uc, "aBFu7s_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ui");
    static aBFu7s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ui(Test_aBFu7s_BFu0ll_Ui, "aBFu7s_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ul");
    static aBFu7s_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ul(Test_aBFu7s_BFu0ll_Ul, "aBFu7s_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Us");
    static aBFu7s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Us(Test_aBFu7s_BFu0ll_Us, "aBFu7s_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Vp");
    static aBFu7s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Vp(Test_aBFu7s_BFu0ll_Vp, "aBFu7s_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0s");
    static aBFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s(Test_aBFu7s_BFu0s, "aBFu7s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0c");
    static aBFu7s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0c(Test_aBFu7s_BFu0s_BFu0c, "aBFu7s_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0i");
    static aBFu7s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0i(Test_aBFu7s_BFu0s_BFu0i, "aBFu7s_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0ll");
    static aBFu7s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0ll(Test_aBFu7s_BFu0s_BFu0ll, "aBFu7s_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0s");
    static aBFu7s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0s(Test_aBFu7s_BFu0s_BFu0s, "aBFu7s_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15i");
    static aBFu7s_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15i(Test_aBFu7s_BFu0s_BFu15i, "aBFu7s_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15ll");
    static aBFu7s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15ll(Test_aBFu7s_BFu0s_BFu15ll, "aBFu7s_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15s");
    static aBFu7s_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15s(Test_aBFu7s_BFu0s_BFu15s, "aBFu7s_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16i");
    static aBFu7s_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16i(Test_aBFu7s_BFu0s_BFu16i, "aBFu7s_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16ll");
    static aBFu7s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16ll(Test_aBFu7s_BFu0s_BFu16ll, "aBFu7s_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16s");
    static aBFu7s_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16s(Test_aBFu7s_BFu0s_BFu16s, "aBFu7s_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu17i");
    static aBFu7s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu17i(Test_aBFu7s_BFu0s_BFu17i, "aBFu7s_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu17ll");
    static aBFu7s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu17ll(Test_aBFu7s_BFu0s_BFu17ll, "aBFu7s_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1c");
    static aBFu7s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1c(Test_aBFu7s_BFu0s_BFu1c, "aBFu7s_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1i");
    static aBFu7s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1i(Test_aBFu7s_BFu0s_BFu1i, "aBFu7s_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1ll");
    static aBFu7s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1ll(Test_aBFu7s_BFu0s_BFu1ll, "aBFu7s_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1s");
    static aBFu7s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1s(Test_aBFu7s_BFu0s_BFu1s, "aBFu7s_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu31i");
    static aBFu7s_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu31i(Test_aBFu7s_BFu0s_BFu31i, "aBFu7s_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu31ll");
    static aBFu7s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu31ll(Test_aBFu7s_BFu0s_BFu31ll, "aBFu7s_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu32i");
    static aBFu7s_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu32i(Test_aBFu7s_BFu0s_BFu32i, "aBFu7s_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu32ll");
    static aBFu7s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu32ll(Test_aBFu7s_BFu0s_BFu32ll, "aBFu7s_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu33");
    static aBFu7s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu33(Test_aBFu7s_BFu0s_BFu33, "aBFu7s_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7c");
    static aBFu7s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7c(Test_aBFu7s_BFu0s_BFu7c, "aBFu7s_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7i");
    static aBFu7s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7i(Test_aBFu7s_BFu0s_BFu7i, "aBFu7s_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7ll");
    static aBFu7s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7ll(Test_aBFu7s_BFu0s_BFu7ll, "aBFu7s_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7s");
    static aBFu7s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7s(Test_aBFu7s_BFu0s_BFu7s, "aBFu7s_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8c");
    static aBFu7s_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8c(Test_aBFu7s_BFu0s_BFu8c, "aBFu7s_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8i");
    static aBFu7s_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8i(Test_aBFu7s_BFu0s_BFu8i, "aBFu7s_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8ll");
    static aBFu7s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8ll(Test_aBFu7s_BFu0s_BFu8ll, "aBFu7s_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8s");
    static aBFu7s_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8s(Test_aBFu7s_BFu0s_BFu8s, "aBFu7s_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9i");
    static aBFu7s_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9i(Test_aBFu7s_BFu0s_BFu9i, "aBFu7s_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9ll");
    static aBFu7s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9ll(Test_aBFu7s_BFu0s_BFu9ll, "aBFu7s_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9s");
    static aBFu7s_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9s(Test_aBFu7s_BFu0s_BFu9s, "aBFu7s_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_C()
{
  {
    init_simple_test("aBFu7s_BFu0s_C");
    static aBFu7s_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_C(Test_aBFu7s_BFu0s_C, "aBFu7s_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_D()
{
  {
    init_simple_test("aBFu7s_BFu0s_D");
    static aBFu7s_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_D(Test_aBFu7s_BFu0s_D, "aBFu7s_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_F()
{
  {
    init_simple_test("aBFu7s_BFu0s_F");
    static aBFu7s_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_F(Test_aBFu7s_BFu0s_F, "aBFu7s_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_I()
{
  {
    init_simple_test("aBFu7s_BFu0s_I");
    static aBFu7s_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_I(Test_aBFu7s_BFu0s_I, "aBFu7s_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ip");
    static aBFu7s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ip(Test_aBFu7s_BFu0s_Ip, "aBFu7s_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_L()
{
  {
    init_simple_test("aBFu7s_BFu0s_L");
    static aBFu7s_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_L(Test_aBFu7s_BFu0s_L, "aBFu7s_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_S()
{
  {
    init_simple_test("aBFu7s_BFu0s_S");
    static aBFu7s_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_S(Test_aBFu7s_BFu0s_S, "aBFu7s_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0s_Uc");
    static aBFu7s_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Uc(Test_aBFu7s_BFu0s_Uc, "aBFu7s_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ui");
    static aBFu7s_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ui(Test_aBFu7s_BFu0s_Ui, "aBFu7s_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ul");
    static aBFu7s_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ul(Test_aBFu7s_BFu0s_Ul, "aBFu7s_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Us()
{
  {
    init_simple_test("aBFu7s_BFu0s_Us");
    static aBFu7s_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Us(Test_aBFu7s_BFu0s_Us, "aBFu7s_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0s_Vp");
    static aBFu7s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Vp(Test_aBFu7s_BFu0s_Vp, "aBFu7s_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0c");
    static aBFu7s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0c(Test_aBFu7s_BFu15i_BFu0c, "aBFu7s_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0i");
    static aBFu7s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0i(Test_aBFu7s_BFu15i_BFu0i, "aBFu7s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0ll");
    static aBFu7s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0ll(Test_aBFu7s_BFu15i_BFu0ll, "aBFu7s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0s");
    static aBFu7s_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0s(Test_aBFu7s_BFu15i_BFu0s, "aBFu7s_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0c");
    static aBFu7s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0c(Test_aBFu7s_BFu15ll_BFu0c, "aBFu7s_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0i");
    static aBFu7s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0i(Test_aBFu7s_BFu15ll_BFu0i, "aBFu7s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0ll");
    static aBFu7s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0ll(Test_aBFu7s_BFu15ll_BFu0ll, "aBFu7s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0s");
    static aBFu7s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0s(Test_aBFu7s_BFu15ll_BFu0s, "aBFu7s_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0c");
    static aBFu7s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0c(Test_aBFu7s_BFu15s_BFu0c, "aBFu7s_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0i");
    static aBFu7s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0i(Test_aBFu7s_BFu15s_BFu0i, "aBFu7s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0ll");
    static aBFu7s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0ll(Test_aBFu7s_BFu15s_BFu0ll, "aBFu7s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0s");
    static aBFu7s_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0s(Test_aBFu7s_BFu15s_BFu0s, "aBFu7s_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0c");
    static aBFu7s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0c(Test_aBFu7s_BFu16i_BFu0c, "aBFu7s_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0i");
    static aBFu7s_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0i(Test_aBFu7s_BFu16i_BFu0i, "aBFu7s_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0ll");
    static aBFu7s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0ll(Test_aBFu7s_BFu16i_BFu0ll, "aBFu7s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0s");
    static aBFu7s_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0s(Test_aBFu7s_BFu16i_BFu0s, "aBFu7s_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0c");
    static aBFu7s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0c(Test_aBFu7s_BFu16ll_BFu0c, "aBFu7s_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0i");
    static aBFu7s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0i(Test_aBFu7s_BFu16ll_BFu0i, "aBFu7s_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0ll");
    static aBFu7s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0ll(Test_aBFu7s_BFu16ll_BFu0ll, "aBFu7s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0s");
    static aBFu7s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0s(Test_aBFu7s_BFu16ll_BFu0s, "aBFu7s_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0c");
    static aBFu7s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0c(Test_aBFu7s_BFu16s_BFu0c, "aBFu7s_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0i");
    static aBFu7s_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0i(Test_aBFu7s_BFu16s_BFu0i, "aBFu7s_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0ll");
    static aBFu7s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0ll(Test_aBFu7s_BFu16s_BFu0ll, "aBFu7s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0s");
    static aBFu7s_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0s(Test_aBFu7s_BFu16s_BFu0s, "aBFu7s_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0c");
    static aBFu7s_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0c(Test_aBFu7s_BFu17i_BFu0c, "aBFu7s_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0i");
    static aBFu7s_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0i(Test_aBFu7s_BFu17i_BFu0i, "aBFu7s_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0ll");
    static aBFu7s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0ll(Test_aBFu7s_BFu17i_BFu0ll, "aBFu7s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0s");
    static aBFu7s_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0s(Test_aBFu7s_BFu17i_BFu0s, "aBFu7s_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0c");
    static aBFu7s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0c(Test_aBFu7s_BFu17ll_BFu0c, "aBFu7s_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0i");
    static aBFu7s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0i(Test_aBFu7s_BFu17ll_BFu0i, "aBFu7s_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0ll");
    static aBFu7s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0ll(Test_aBFu7s_BFu17ll_BFu0ll, "aBFu7s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0s");
    static aBFu7s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0s(Test_aBFu7s_BFu17ll_BFu0s, "aBFu7s_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0c");
    static aBFu7s_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0c(Test_aBFu7s_BFu1c_BFu0c, "aBFu7s_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0i");
    static aBFu7s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0i(Test_aBFu7s_BFu1c_BFu0i, "aBFu7s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0ll");
    static aBFu7s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0ll(Test_aBFu7s_BFu1c_BFu0ll, "aBFu7s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0s");
    static aBFu7s_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0s(Test_aBFu7s_BFu1c_BFu0s, "aBFu7s_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0c");
    static aBFu7s_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0c(Test_aBFu7s_BFu1i_BFu0c, "aBFu7s_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0i");
    static aBFu7s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0i(Test_aBFu7s_BFu1i_BFu0i, "aBFu7s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0ll");
    static aBFu7s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0ll(Test_aBFu7s_BFu1i_BFu0ll, "aBFu7s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0s");
    static aBFu7s_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0s(Test_aBFu7s_BFu1i_BFu0s, "aBFu7s_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0c");
    static aBFu7s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0c(Test_aBFu7s_BFu1ll_BFu0c, "aBFu7s_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0i");
    static aBFu7s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0i(Test_aBFu7s_BFu1ll_BFu0i, "aBFu7s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0ll");
    static aBFu7s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0ll(Test_aBFu7s_BFu1ll_BFu0ll, "aBFu7s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0s");
    static aBFu7s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0s(Test_aBFu7s_BFu1ll_BFu0s, "aBFu7s_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0c");
    static aBFu7s_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0c(Test_aBFu7s_BFu1s_BFu0c, "aBFu7s_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0i");
    static aBFu7s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0i(Test_aBFu7s_BFu1s_BFu0i, "aBFu7s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0ll");
    static aBFu7s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0ll(Test_aBFu7s_BFu1s_BFu0ll, "aBFu7s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0s");
    static aBFu7s_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0s(Test_aBFu7s_BFu1s_BFu0s, "aBFu7s_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0c");
    static aBFu7s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0c(Test_aBFu7s_BFu31i_BFu0c, "aBFu7s_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0i");
    static aBFu7s_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0i(Test_aBFu7s_BFu31i_BFu0i, "aBFu7s_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0ll");
    static aBFu7s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0ll(Test_aBFu7s_BFu31i_BFu0ll, "aBFu7s_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0s");
    static aBFu7s_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0s(Test_aBFu7s_BFu31i_BFu0s, "aBFu7s_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0c");
    static aBFu7s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0c(Test_aBFu7s_BFu31ll_BFu0c, "aBFu7s_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0i");
    static aBFu7s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0i(Test_aBFu7s_BFu31ll_BFu0i, "aBFu7s_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0ll");
    static aBFu7s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0ll(Test_aBFu7s_BFu31ll_BFu0ll, "aBFu7s_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0s");
    static aBFu7s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0s(Test_aBFu7s_BFu31ll_BFu0s, "aBFu7s_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0c");
    static aBFu7s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0c(Test_aBFu7s_BFu32i_BFu0c, "aBFu7s_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0i");
    static aBFu7s_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0i(Test_aBFu7s_BFu32i_BFu0i, "aBFu7s_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0ll");
    static aBFu7s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0ll(Test_aBFu7s_BFu32i_BFu0ll, "aBFu7s_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0s");
    static aBFu7s_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0s(Test_aBFu7s_BFu32i_BFu0s, "aBFu7s_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0c");
    static aBFu7s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0c(Test_aBFu7s_BFu32ll_BFu0c, "aBFu7s_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0i");
    static aBFu7s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0i(Test_aBFu7s_BFu32ll_BFu0i, "aBFu7s_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0ll");
    static aBFu7s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0ll(Test_aBFu7s_BFu32ll_BFu0ll, "aBFu7s_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0s");
    static aBFu7s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0s(Test_aBFu7s_BFu32ll_BFu0s, "aBFu7s_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0c");
    static aBFu7s_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0c(Test_aBFu7s_BFu33_BFu0c, "aBFu7s_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0i");
    static aBFu7s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0i(Test_aBFu7s_BFu33_BFu0i, "aBFu7s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0ll");
    static aBFu7s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0ll(Test_aBFu7s_BFu33_BFu0ll, "aBFu7s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0s");
    static aBFu7s_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0s(Test_aBFu7s_BFu33_BFu0s, "aBFu7s_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0c");
    static aBFu7s_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0c(Test_aBFu7s_BFu7c_BFu0c, "aBFu7s_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0i");
    static aBFu7s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0i(Test_aBFu7s_BFu7c_BFu0i, "aBFu7s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0ll");
    static aBFu7s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0ll(Test_aBFu7s_BFu7c_BFu0ll, "aBFu7s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0s");
    static aBFu7s_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0s(Test_aBFu7s_BFu7c_BFu0s, "aBFu7s_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0c");
    static aBFu7s_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0c(Test_aBFu7s_BFu7i_BFu0c, "aBFu7s_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0i");
    static aBFu7s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0i(Test_aBFu7s_BFu7i_BFu0i, "aBFu7s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0ll");
    static aBFu7s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0ll(Test_aBFu7s_BFu7i_BFu0ll, "aBFu7s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0s");
    static aBFu7s_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0s(Test_aBFu7s_BFu7i_BFu0s, "aBFu7s_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0c");
    static aBFu7s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0c(Test_aBFu7s_BFu7ll_BFu0c, "aBFu7s_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0i");
    static aBFu7s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0i(Test_aBFu7s_BFu7ll_BFu0i, "aBFu7s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0ll");
    static aBFu7s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0ll(Test_aBFu7s_BFu7ll_BFu0ll, "aBFu7s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0s");
    static aBFu7s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0s(Test_aBFu7s_BFu7ll_BFu0s, "aBFu7s_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0c");
    static aBFu7s_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0c(Test_aBFu7s_BFu7s_BFu0c, "aBFu7s_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0i");
    static aBFu7s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0i(Test_aBFu7s_BFu7s_BFu0i, "aBFu7s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0ll");
    static aBFu7s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0ll(Test_aBFu7s_BFu7s_BFu0ll, "aBFu7s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0s");
    static aBFu7s_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0s(Test_aBFu7s_BFu7s_BFu0s, "aBFu7s_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0c");
    static aBFu7s_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0c(Test_aBFu7s_BFu8c_BFu0c, "aBFu7s_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0i");
    static aBFu7s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0i(Test_aBFu7s_BFu8c_BFu0i, "aBFu7s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0ll");
    static aBFu7s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0ll(Test_aBFu7s_BFu8c_BFu0ll, "aBFu7s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0s");
    static aBFu7s_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0s(Test_aBFu7s_BFu8c_BFu0s, "aBFu7s_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0c");
    static aBFu7s_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0c(Test_aBFu7s_BFu8i_BFu0c, "aBFu7s_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0i");
    static aBFu7s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0i(Test_aBFu7s_BFu8i_BFu0i, "aBFu7s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0ll");
    static aBFu7s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0ll(Test_aBFu7s_BFu8i_BFu0ll, "aBFu7s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0s");
    static aBFu7s_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0s(Test_aBFu7s_BFu8i_BFu0s, "aBFu7s_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0c");
    static aBFu7s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0c(Test_aBFu7s_BFu8ll_BFu0c, "aBFu7s_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0i");
    static aBFu7s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0i(Test_aBFu7s_BFu8ll_BFu0i, "aBFu7s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0ll");
    static aBFu7s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0ll(Test_aBFu7s_BFu8ll_BFu0ll, "aBFu7s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0s");
    static aBFu7s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0s(Test_aBFu7s_BFu8ll_BFu0s, "aBFu7s_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0c");
    static aBFu7s_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0c(Test_aBFu7s_BFu8s_BFu0c, "aBFu7s_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0i");
    static aBFu7s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0i(Test_aBFu7s_BFu8s_BFu0i, "aBFu7s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0ll");
    static aBFu7s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0ll(Test_aBFu7s_BFu8s_BFu0ll, "aBFu7s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0s");
    static aBFu7s_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0s(Test_aBFu7s_BFu8s_BFu0s, "aBFu7s_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0c");
    static aBFu7s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0c(Test_aBFu7s_BFu9i_BFu0c, "aBFu7s_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0i");
    static aBFu7s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0i(Test_aBFu7s_BFu9i_BFu0i, "aBFu7s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0ll");
    static aBFu7s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0ll(Test_aBFu7s_BFu9i_BFu0ll, "aBFu7s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0s");
    static aBFu7s_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0s(Test_aBFu7s_BFu9i_BFu0s, "aBFu7s_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0c");
    static aBFu7s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0c(Test_aBFu7s_BFu9ll_BFu0c, "aBFu7s_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0i");
    static aBFu7s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0i(Test_aBFu7s_BFu9ll_BFu0i, "aBFu7s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0ll");
    static aBFu7s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0ll(Test_aBFu7s_BFu9ll_BFu0ll, "aBFu7s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0s");
    static aBFu7s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0s(Test_aBFu7s_BFu9ll_BFu0s, "aBFu7s_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0c");
    static aBFu7s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0c(Test_aBFu7s_BFu9s_BFu0c, "aBFu7s_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0i");
    static aBFu7s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0i(Test_aBFu7s_BFu9s_BFu0i, "aBFu7s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0ll");
    static aBFu7s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0ll(Test_aBFu7s_BFu9s_BFu0ll, "aBFu7s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0s");
    static aBFu7s_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0s(Test_aBFu7s_BFu9s_BFu0s, "aBFu7s_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0c()
{
  {
    init_simple_test("aBFu7s_C_BFu0c");
    static aBFu7s_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0c(Test_aBFu7s_C_BFu0c, "aBFu7s_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0i()
{
  {
    init_simple_test("aBFu7s_C_BFu0i");
    static aBFu7s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0i(Test_aBFu7s_C_BFu0i, "aBFu7s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0ll()
{
  {
    init_simple_test("aBFu7s_C_BFu0ll");
    static aBFu7s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0ll(Test_aBFu7s_C_BFu0ll, "aBFu7s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0s()
{
  {
    init_simple_test("aBFu7s_C_BFu0s");
    static aBFu7s_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0s(Test_aBFu7s_C_BFu0s, "aBFu7s_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0c()
{
  {
    init_simple_test("aBFu7s_D_BFu0c");
    static aBFu7s_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0c(Test_aBFu7s_D_BFu0c, "aBFu7s_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0i()
{
  {
    init_simple_test("aBFu7s_D_BFu0i");
    static aBFu7s_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0i(Test_aBFu7s_D_BFu0i, "aBFu7s_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0ll()
{
  {
    init_simple_test("aBFu7s_D_BFu0ll");
    static aBFu7s_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0ll(Test_aBFu7s_D_BFu0ll, "aBFu7s_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0s()
{
  {
    init_simple_test("aBFu7s_D_BFu0s");
    static aBFu7s_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0s(Test_aBFu7s_D_BFu0s, "aBFu7s_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0c()
{
  {
    init_simple_test("aBFu7s_F_BFu0c");
    static aBFu7s_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0c(Test_aBFu7s_F_BFu0c, "aBFu7s_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0i()
{
  {
    init_simple_test("aBFu7s_F_BFu0i");
    static aBFu7s_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0i(Test_aBFu7s_F_BFu0i, "aBFu7s_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0ll()
{
  {
    init_simple_test("aBFu7s_F_BFu0ll");
    static aBFu7s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0ll(Test_aBFu7s_F_BFu0ll, "aBFu7s_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0s()
{
  {
    init_simple_test("aBFu7s_F_BFu0s");
    static aBFu7s_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0s(Test_aBFu7s_F_BFu0s, "aBFu7s_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0c()
{
  {
    init_simple_test("aBFu7s_I_BFu0c");
    static aBFu7s_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0c(Test_aBFu7s_I_BFu0c, "aBFu7s_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0i()
{
  {
    init_simple_test("aBFu7s_I_BFu0i");
    static aBFu7s_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0i(Test_aBFu7s_I_BFu0i, "aBFu7s_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0ll()
{
  {
    init_simple_test("aBFu7s_I_BFu0ll");
    static aBFu7s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0ll(Test_aBFu7s_I_BFu0ll, "aBFu7s_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0s()
{
  {
    init_simple_test("aBFu7s_I_BFu0s");
    static aBFu7s_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0s(Test_aBFu7s_I_BFu0s, "aBFu7s_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0c");
    static aBFu7s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0c(Test_aBFu7s_Ip_BFu0c, "aBFu7s_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0i");
    static aBFu7s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0i(Test_aBFu7s_Ip_BFu0i, "aBFu7s_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0ll");
    static aBFu7s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0ll(Test_aBFu7s_Ip_BFu0ll, "aBFu7s_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0s");
    static aBFu7s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0s(Test_aBFu7s_Ip_BFu0s, "aBFu7s_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0c()
{
  {
    init_simple_test("aBFu7s_L_BFu0c");
    static aBFu7s_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0c(Test_aBFu7s_L_BFu0c, "aBFu7s_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0i()
{
  {
    init_simple_test("aBFu7s_L_BFu0i");
    static aBFu7s_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0i(Test_aBFu7s_L_BFu0i, "aBFu7s_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0ll()
{
  {
    init_simple_test("aBFu7s_L_BFu0ll");
    static aBFu7s_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0ll(Test_aBFu7s_L_BFu0ll, "aBFu7s_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0s()
{
  {
    init_simple_test("aBFu7s_L_BFu0s");
    static aBFu7s_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0s(Test_aBFu7s_L_BFu0s, "aBFu7s_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0c()
{
  {
    init_simple_test("aBFu7s_S_BFu0c");
    static aBFu7s_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0c(Test_aBFu7s_S_BFu0c, "aBFu7s_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0i()
{
  {
    init_simple_test("aBFu7s_S_BFu0i");
    static aBFu7s_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0i(Test_aBFu7s_S_BFu0i, "aBFu7s_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0ll()
{
  {
    init_simple_test("aBFu7s_S_BFu0ll");
    static aBFu7s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0ll(Test_aBFu7s_S_BFu0ll, "aBFu7s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0s()
{
  {
    init_simple_test("aBFu7s_S_BFu0s");
    static aBFu7s_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0s(Test_aBFu7s_S_BFu0s, "aBFu7s_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0c");
    static aBFu7s_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0c(Test_aBFu7s_Uc_BFu0c, "aBFu7s_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0i");
    static aBFu7s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0i(Test_aBFu7s_Uc_BFu0i, "aBFu7s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0ll");
    static aBFu7s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0ll(Test_aBFu7s_Uc_BFu0ll, "aBFu7s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0s");
    static aBFu7s_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0s(Test_aBFu7s_Uc_BFu0s, "aBFu7s_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0c");
    static aBFu7s_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0c(Test_aBFu7s_Ui_BFu0c, "aBFu7s_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0i");
    static aBFu7s_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0i(Test_aBFu7s_Ui_BFu0i, "aBFu7s_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0ll");
    static aBFu7s_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0ll(Test_aBFu7s_Ui_BFu0ll, "aBFu7s_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0s");
    static aBFu7s_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0s(Test_aBFu7s_Ui_BFu0s, "aBFu7s_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0c");
    static aBFu7s_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0c(Test_aBFu7s_Ul_BFu0c, "aBFu7s_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0i");
    static aBFu7s_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0i(Test_aBFu7s_Ul_BFu0i, "aBFu7s_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0ll");
    static aBFu7s_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0ll(Test_aBFu7s_Ul_BFu0ll, "aBFu7s_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0s");
    static aBFu7s_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0s(Test_aBFu7s_Ul_BFu0s, "aBFu7s_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0c()
{
  {
    init_simple_test("aBFu7s_Us_BFu0c");
    static aBFu7s_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0c(Test_aBFu7s_Us_BFu0c, "aBFu7s_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0i()
{
  {
    init_simple_test("aBFu7s_Us_BFu0i");
    static aBFu7s_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0i(Test_aBFu7s_Us_BFu0i, "aBFu7s_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Us_BFu0ll");
    static aBFu7s_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0ll(Test_aBFu7s_Us_BFu0ll, "aBFu7s_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0s()
{
  {
    init_simple_test("aBFu7s_Us_BFu0s");
    static aBFu7s_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0s(Test_aBFu7s_Us_BFu0s, "aBFu7s_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0c");
    static aBFu7s_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0c(Test_aBFu7s_Vp_BFu0c, "aBFu7s_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0i");
    static aBFu7s_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0i(Test_aBFu7s_Vp_BFu0i, "aBFu7s_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0ll");
    static aBFu7s_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0ll(Test_aBFu7s_Vp_BFu0ll, "aBFu7s_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0s");
    static aBFu7s_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0s(Test_aBFu7s_Vp_BFu0s, "aBFu7s_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0c");
    static aBFu8c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c(Test_aBFu8c_BFu0c, "aBFu8c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0c");
    static aBFu8c_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8c_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0c(Test_aBFu8c_BFu0c_BFu0c, "aBFu8c_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0i");
    static aBFu8c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0i(Test_aBFu8c_BFu0c_BFu0i, "aBFu8c_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0ll");
    static aBFu8c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0ll(Test_aBFu8c_BFu0c_BFu0ll, "aBFu8c_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0s");
    static aBFu8c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0s(Test_aBFu8c_BFu0c_BFu0s, "aBFu8c_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15i");
    static aBFu8c_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15i(Test_aBFu8c_BFu0c_BFu15i, "aBFu8c_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15ll");
    static aBFu8c_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15ll(Test_aBFu8c_BFu0c_BFu15ll, "aBFu8c_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15s");
    static aBFu8c_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15s(Test_aBFu8c_BFu0c_BFu15s, "aBFu8c_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16i");
    static aBFu8c_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16i(Test_aBFu8c_BFu0c_BFu16i, "aBFu8c_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16ll");
    static aBFu8c_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16ll(Test_aBFu8c_BFu0c_BFu16ll, "aBFu8c_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16s");
    static aBFu8c_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16s(Test_aBFu8c_BFu0c_BFu16s, "aBFu8c_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu17i");
    static aBFu8c_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu17i(Test_aBFu8c_BFu0c_BFu17i, "aBFu8c_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu17ll");
    static aBFu8c_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu17ll(Test_aBFu8c_BFu0c_BFu17ll, "aBFu8c_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1c");
    static aBFu8c_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1c(Test_aBFu8c_BFu0c_BFu1c, "aBFu8c_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1i");
    static aBFu8c_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1i(Test_aBFu8c_BFu0c_BFu1i, "aBFu8c_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1ll");
    static aBFu8c_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1ll(Test_aBFu8c_BFu0c_BFu1ll, "aBFu8c_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1s");
    static aBFu8c_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1s(Test_aBFu8c_BFu0c_BFu1s, "aBFu8c_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu31i");
    static aBFu8c_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu31i(Test_aBFu8c_BFu0c_BFu31i, "aBFu8c_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu31ll");
    static aBFu8c_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu31ll(Test_aBFu8c_BFu0c_BFu31ll, "aBFu8c_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu32i");
    static aBFu8c_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu32i(Test_aBFu8c_BFu0c_BFu32i, "aBFu8c_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu32ll");
    static aBFu8c_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu32ll(Test_aBFu8c_BFu0c_BFu32ll, "aBFu8c_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu33");
    static aBFu8c_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu33(Test_aBFu8c_BFu0c_BFu33, "aBFu8c_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7c");
    static aBFu8c_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7c(Test_aBFu8c_BFu0c_BFu7c, "aBFu8c_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7i");
    static aBFu8c_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7i(Test_aBFu8c_BFu0c_BFu7i, "aBFu8c_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7ll");
    static aBFu8c_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7ll(Test_aBFu8c_BFu0c_BFu7ll, "aBFu8c_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7s");
    static aBFu8c_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7s(Test_aBFu8c_BFu0c_BFu7s, "aBFu8c_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8c");
    static aBFu8c_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8c(Test_aBFu8c_BFu0c_BFu8c, "aBFu8c_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8i");
    static aBFu8c_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8i(Test_aBFu8c_BFu0c_BFu8i, "aBFu8c_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8ll");
    static aBFu8c_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8ll(Test_aBFu8c_BFu0c_BFu8ll, "aBFu8c_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8s");
    static aBFu8c_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8s(Test_aBFu8c_BFu0c_BFu8s, "aBFu8c_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9i");
    static aBFu8c_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9i(Test_aBFu8c_BFu0c_BFu9i, "aBFu8c_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9ll");
    static aBFu8c_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9ll(Test_aBFu8c_BFu0c_BFu9ll, "aBFu8c_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9s");
    static aBFu8c_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9s(Test_aBFu8c_BFu0c_BFu9s, "aBFu8c_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_C()
{
  {
    init_simple_test("aBFu8c_BFu0c_C");
    static aBFu8c_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_C(Test_aBFu8c_BFu0c_C, "aBFu8c_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_D()
{
  {
    init_simple_test("aBFu8c_BFu0c_D");
    static aBFu8c_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_D(Test_aBFu8c_BFu0c_D, "aBFu8c_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_F()
{
  {
    init_simple_test("aBFu8c_BFu0c_F");
    static aBFu8c_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_F(Test_aBFu8c_BFu0c_F, "aBFu8c_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_I()
{
  {
    init_simple_test("aBFu8c_BFu0c_I");
    static aBFu8c_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_I(Test_aBFu8c_BFu0c_I, "aBFu8c_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ip");
    static aBFu8c_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ip(Test_aBFu8c_BFu0c_Ip, "aBFu8c_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_L()
{
  {
    init_simple_test("aBFu8c_BFu0c_L");
    static aBFu8c_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_L(Test_aBFu8c_BFu0c_L, "aBFu8c_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_S()
{
  {
    init_simple_test("aBFu8c_BFu0c_S");
    static aBFu8c_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_S(Test_aBFu8c_BFu0c_S, "aBFu8c_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0c_Uc");
    static aBFu8c_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Uc(Test_aBFu8c_BFu0c_Uc, "aBFu8c_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ui");
    static aBFu8c_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ui(Test_aBFu8c_BFu0c_Ui, "aBFu8c_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ul");
    static aBFu8c_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ul(Test_aBFu8c_BFu0c_Ul, "aBFu8c_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Us()
{
  {
    init_simple_test("aBFu8c_BFu0c_Us");
    static aBFu8c_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Us(Test_aBFu8c_BFu0c_Us, "aBFu8c_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0c_Vp");
    static aBFu8c_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Vp(Test_aBFu8c_BFu0c_Vp, "aBFu8c_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0i");
    static aBFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i(Test_aBFu8c_BFu0i, "aBFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0c");
    static aBFu8c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0c(Test_aBFu8c_BFu0i_BFu0c, "aBFu8c_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0i");
    static aBFu8c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0i(Test_aBFu8c_BFu0i_BFu0i, "aBFu8c_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0ll");
    static aBFu8c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0ll(Test_aBFu8c_BFu0i_BFu0ll, "aBFu8c_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0s");
    static aBFu8c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0s(Test_aBFu8c_BFu0i_BFu0s, "aBFu8c_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15i");
    static aBFu8c_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15i(Test_aBFu8c_BFu0i_BFu15i, "aBFu8c_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15ll");
    static aBFu8c_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15ll(Test_aBFu8c_BFu0i_BFu15ll, "aBFu8c_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15s");
    static aBFu8c_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15s(Test_aBFu8c_BFu0i_BFu15s, "aBFu8c_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16i");
    static aBFu8c_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16i(Test_aBFu8c_BFu0i_BFu16i, "aBFu8c_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16ll");
    static aBFu8c_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16ll(Test_aBFu8c_BFu0i_BFu16ll, "aBFu8c_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16s");
    static aBFu8c_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16s(Test_aBFu8c_BFu0i_BFu16s, "aBFu8c_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu17i");
    static aBFu8c_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu17i(Test_aBFu8c_BFu0i_BFu17i, "aBFu8c_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu17ll");
    static aBFu8c_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu17ll(Test_aBFu8c_BFu0i_BFu17ll, "aBFu8c_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1c");
    static aBFu8c_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1c(Test_aBFu8c_BFu0i_BFu1c, "aBFu8c_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1i");
    static aBFu8c_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1i(Test_aBFu8c_BFu0i_BFu1i, "aBFu8c_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1ll");
    static aBFu8c_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1ll(Test_aBFu8c_BFu0i_BFu1ll, "aBFu8c_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1s");
    static aBFu8c_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1s(Test_aBFu8c_BFu0i_BFu1s, "aBFu8c_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu31i");
    static aBFu8c_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu31i(Test_aBFu8c_BFu0i_BFu31i, "aBFu8c_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu31ll");
    static aBFu8c_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu31ll(Test_aBFu8c_BFu0i_BFu31ll, "aBFu8c_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu32i");
    static aBFu8c_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu32i(Test_aBFu8c_BFu0i_BFu32i, "aBFu8c_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu32ll");
    static aBFu8c_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu32ll(Test_aBFu8c_BFu0i_BFu32ll, "aBFu8c_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu33");
    static aBFu8c_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8c_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu33(Test_aBFu8c_BFu0i_BFu33, "aBFu8c_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7c");
    static aBFu8c_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7c(Test_aBFu8c_BFu0i_BFu7c, "aBFu8c_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7i");
    static aBFu8c_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7i(Test_aBFu8c_BFu0i_BFu7i, "aBFu8c_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7ll");
    static aBFu8c_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7ll(Test_aBFu8c_BFu0i_BFu7ll, "aBFu8c_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7s");
    static aBFu8c_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7s(Test_aBFu8c_BFu0i_BFu7s, "aBFu8c_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8c");
    static aBFu8c_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8c(Test_aBFu8c_BFu0i_BFu8c, "aBFu8c_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8i");
    static aBFu8c_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8i(Test_aBFu8c_BFu0i_BFu8i, "aBFu8c_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8ll");
    static aBFu8c_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8ll(Test_aBFu8c_BFu0i_BFu8ll, "aBFu8c_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8s");
    static aBFu8c_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8s(Test_aBFu8c_BFu0i_BFu8s, "aBFu8c_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9i");
    static aBFu8c_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9i(Test_aBFu8c_BFu0i_BFu9i, "aBFu8c_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9ll");
    static aBFu8c_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9ll(Test_aBFu8c_BFu0i_BFu9ll, "aBFu8c_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9s");
    static aBFu8c_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9s(Test_aBFu8c_BFu0i_BFu9s, "aBFu8c_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_C()
{
  {
    init_simple_test("aBFu8c_BFu0i_C");
    static aBFu8c_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_C(Test_aBFu8c_BFu0i_C, "aBFu8c_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_D()
{
  {
    init_simple_test("aBFu8c_BFu0i_D");
    static aBFu8c_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_D(Test_aBFu8c_BFu0i_D, "aBFu8c_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_F()
{
  {
    init_simple_test("aBFu8c_BFu0i_F");
    static aBFu8c_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_F(Test_aBFu8c_BFu0i_F, "aBFu8c_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_I()
{
  {
    init_simple_test("aBFu8c_BFu0i_I");
    static aBFu8c_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_I(Test_aBFu8c_BFu0i_I, "aBFu8c_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ip");
    static aBFu8c_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ip(Test_aBFu8c_BFu0i_Ip, "aBFu8c_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_L()
{
  {
    init_simple_test("aBFu8c_BFu0i_L");
    static aBFu8c_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_L(Test_aBFu8c_BFu0i_L, "aBFu8c_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_S()
{
  {
    init_simple_test("aBFu8c_BFu0i_S");
    static aBFu8c_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_S(Test_aBFu8c_BFu0i_S, "aBFu8c_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0i_Uc");
    static aBFu8c_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Uc(Test_aBFu8c_BFu0i_Uc, "aBFu8c_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ui");
    static aBFu8c_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ui(Test_aBFu8c_BFu0i_Ui, "aBFu8c_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ul");
    static aBFu8c_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ul(Test_aBFu8c_BFu0i_Ul, "aBFu8c_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Us()
{
  {
    init_simple_test("aBFu8c_BFu0i_Us");
    static aBFu8c_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Us(Test_aBFu8c_BFu0i_Us, "aBFu8c_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0i_Vp");
    static aBFu8c_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Vp(Test_aBFu8c_BFu0i_Vp, "aBFu8c_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll");
    static aBFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll(Test_aBFu8c_BFu0ll, "aBFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0c");
    static aBFu8c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0c(Test_aBFu8c_BFu0ll_BFu0c, "aBFu8c_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0i");
    static aBFu8c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0i(Test_aBFu8c_BFu0ll_BFu0i, "aBFu8c_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0ll");
    static aBFu8c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0ll(Test_aBFu8c_BFu0ll_BFu0ll, "aBFu8c_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0s");
    static aBFu8c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0s(Test_aBFu8c_BFu0ll_BFu0s, "aBFu8c_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15i");
    static aBFu8c_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15i(Test_aBFu8c_BFu0ll_BFu15i, "aBFu8c_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15ll");
    static aBFu8c_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15ll(Test_aBFu8c_BFu0ll_BFu15ll, "aBFu8c_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15s");
    static aBFu8c_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15s(Test_aBFu8c_BFu0ll_BFu15s, "aBFu8c_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16i");
    static aBFu8c_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16i(Test_aBFu8c_BFu0ll_BFu16i, "aBFu8c_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16ll");
    static aBFu8c_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16ll(Test_aBFu8c_BFu0ll_BFu16ll, "aBFu8c_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16s");
    static aBFu8c_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16s(Test_aBFu8c_BFu0ll_BFu16s, "aBFu8c_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu17i");
    static aBFu8c_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8c_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu17i(Test_aBFu8c_BFu0ll_BFu17i, "aBFu8c_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu17ll");
    static aBFu8c_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8c_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu17ll(Test_aBFu8c_BFu0ll_BFu17ll, "aBFu8c_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1c");
    static aBFu8c_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1c(Test_aBFu8c_BFu0ll_BFu1c, "aBFu8c_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1i");
    static aBFu8c_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1i(Test_aBFu8c_BFu0ll_BFu1i, "aBFu8c_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1ll");
    static aBFu8c_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1ll(Test_aBFu8c_BFu0ll_BFu1ll, "aBFu8c_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1s");
    static aBFu8c_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1s(Test_aBFu8c_BFu0ll_BFu1s, "aBFu8c_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu31i");
    static aBFu8c_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu31i(Test_aBFu8c_BFu0ll_BFu31i, "aBFu8c_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu31ll");
    static aBFu8c_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu31ll(Test_aBFu8c_BFu0ll_BFu31ll, "aBFu8c_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu32i");
    static aBFu8c_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu32i(Test_aBFu8c_BFu0ll_BFu32i, "aBFu8c_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu32ll");
    static aBFu8c_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu32ll(Test_aBFu8c_BFu0ll_BFu32ll, "aBFu8c_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu33");
    static aBFu8c_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8c_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu33(Test_aBFu8c_BFu0ll_BFu33, "aBFu8c_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7c");
    static aBFu8c_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7c(Test_aBFu8c_BFu0ll_BFu7c, "aBFu8c_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7i");
    static aBFu8c_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7i(Test_aBFu8c_BFu0ll_BFu7i, "aBFu8c_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7ll");
    static aBFu8c_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7ll(Test_aBFu8c_BFu0ll_BFu7ll, "aBFu8c_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7s");
    static aBFu8c_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7s(Test_aBFu8c_BFu0ll_BFu7s, "aBFu8c_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8c");
    static aBFu8c_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8c(Test_aBFu8c_BFu0ll_BFu8c, "aBFu8c_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8i");
    static aBFu8c_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8i(Test_aBFu8c_BFu0ll_BFu8i, "aBFu8c_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8ll");
    static aBFu8c_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8ll(Test_aBFu8c_BFu0ll_BFu8ll, "aBFu8c_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8s");
    static aBFu8c_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8s(Test_aBFu8c_BFu0ll_BFu8s, "aBFu8c_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9i");
    static aBFu8c_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9i(Test_aBFu8c_BFu0ll_BFu9i, "aBFu8c_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9ll");
    static aBFu8c_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9ll(Test_aBFu8c_BFu0ll_BFu9ll, "aBFu8c_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9s");
    static aBFu8c_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9s(Test_aBFu8c_BFu0ll_BFu9s, "aBFu8c_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_C()
{
  {
    init_simple_test("aBFu8c_BFu0ll_C");
    static aBFu8c_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_C(Test_aBFu8c_BFu0ll_C, "aBFu8c_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_D()
{
  {
    init_simple_test("aBFu8c_BFu0ll_D");
    static aBFu8c_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_D(Test_aBFu8c_BFu0ll_D, "aBFu8c_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_F()
{
  {
    init_simple_test("aBFu8c_BFu0ll_F");
    static aBFu8c_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_F(Test_aBFu8c_BFu0ll_F, "aBFu8c_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_I()
{
  {
    init_simple_test("aBFu8c_BFu0ll_I");
    static aBFu8c_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_I(Test_aBFu8c_BFu0ll_I, "aBFu8c_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ip");
    static aBFu8c_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ip(Test_aBFu8c_BFu0ll_Ip, "aBFu8c_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_L()
{
  {
    init_simple_test("aBFu8c_BFu0ll_L");
    static aBFu8c_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_L(Test_aBFu8c_BFu0ll_L, "aBFu8c_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_S()
{
  {
    init_simple_test("aBFu8c_BFu0ll_S");
    static aBFu8c_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_S(Test_aBFu8c_BFu0ll_S, "aBFu8c_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Uc");
    static aBFu8c_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Uc(Test_aBFu8c_BFu0ll_Uc, "aBFu8c_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ui");
    static aBFu8c_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ui(Test_aBFu8c_BFu0ll_Ui, "aBFu8c_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ul");
    static aBFu8c_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ul(Test_aBFu8c_BFu0ll_Ul, "aBFu8c_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Us");
    static aBFu8c_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Us(Test_aBFu8c_BFu0ll_Us, "aBFu8c_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Vp");
    static aBFu8c_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Vp(Test_aBFu8c_BFu0ll_Vp, "aBFu8c_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0s");
    static aBFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s(Test_aBFu8c_BFu0s, "aBFu8c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0c");
    static aBFu8c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0c(Test_aBFu8c_BFu0s_BFu0c, "aBFu8c_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0i");
    static aBFu8c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0i(Test_aBFu8c_BFu0s_BFu0i, "aBFu8c_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0ll");
    static aBFu8c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0ll(Test_aBFu8c_BFu0s_BFu0ll, "aBFu8c_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0s");
    static aBFu8c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0s(Test_aBFu8c_BFu0s_BFu0s, "aBFu8c_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15i");
    static aBFu8c_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15i(Test_aBFu8c_BFu0s_BFu15i, "aBFu8c_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15ll");
    static aBFu8c_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15ll(Test_aBFu8c_BFu0s_BFu15ll, "aBFu8c_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15s");
    static aBFu8c_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15s(Test_aBFu8c_BFu0s_BFu15s, "aBFu8c_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16i");
    static aBFu8c_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16i(Test_aBFu8c_BFu0s_BFu16i, "aBFu8c_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16ll");
    static aBFu8c_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16ll(Test_aBFu8c_BFu0s_BFu16ll, "aBFu8c_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16s");
    static aBFu8c_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16s(Test_aBFu8c_BFu0s_BFu16s, "aBFu8c_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu17i");
    static aBFu8c_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu17i(Test_aBFu8c_BFu0s_BFu17i, "aBFu8c_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu17ll");
    static aBFu8c_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu17ll(Test_aBFu8c_BFu0s_BFu17ll, "aBFu8c_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1c");
    static aBFu8c_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1c(Test_aBFu8c_BFu0s_BFu1c, "aBFu8c_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1i");
    static aBFu8c_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1i(Test_aBFu8c_BFu0s_BFu1i, "aBFu8c_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1ll");
    static aBFu8c_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1ll(Test_aBFu8c_BFu0s_BFu1ll, "aBFu8c_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1s");
    static aBFu8c_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1s(Test_aBFu8c_BFu0s_BFu1s, "aBFu8c_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu31i");
    static aBFu8c_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu31i(Test_aBFu8c_BFu0s_BFu31i, "aBFu8c_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu31ll");
    static aBFu8c_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu31ll(Test_aBFu8c_BFu0s_BFu31ll, "aBFu8c_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu32i");
    static aBFu8c_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu32i(Test_aBFu8c_BFu0s_BFu32i, "aBFu8c_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu32ll");
    static aBFu8c_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu32ll(Test_aBFu8c_BFu0s_BFu32ll, "aBFu8c_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu33");
    static aBFu8c_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu33(Test_aBFu8c_BFu0s_BFu33, "aBFu8c_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7c");
    static aBFu8c_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7c(Test_aBFu8c_BFu0s_BFu7c, "aBFu8c_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7i");
    static aBFu8c_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7i(Test_aBFu8c_BFu0s_BFu7i, "aBFu8c_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7ll");
    static aBFu8c_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7ll(Test_aBFu8c_BFu0s_BFu7ll, "aBFu8c_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7s");
    static aBFu8c_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7s(Test_aBFu8c_BFu0s_BFu7s, "aBFu8c_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8c");
    static aBFu8c_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8c(Test_aBFu8c_BFu0s_BFu8c, "aBFu8c_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8i");
    static aBFu8c_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8i(Test_aBFu8c_BFu0s_BFu8i, "aBFu8c_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8ll");
    static aBFu8c_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8ll(Test_aBFu8c_BFu0s_BFu8ll, "aBFu8c_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8s");
    static aBFu8c_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8s(Test_aBFu8c_BFu0s_BFu8s, "aBFu8c_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9i");
    static aBFu8c_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9i(Test_aBFu8c_BFu0s_BFu9i, "aBFu8c_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9ll");
    static aBFu8c_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9ll(Test_aBFu8c_BFu0s_BFu9ll, "aBFu8c_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9s");
    static aBFu8c_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9s(Test_aBFu8c_BFu0s_BFu9s, "aBFu8c_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_C()
{
  {
    init_simple_test("aBFu8c_BFu0s_C");
    static aBFu8c_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_C(Test_aBFu8c_BFu0s_C, "aBFu8c_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_D()
{
  {
    init_simple_test("aBFu8c_BFu0s_D");
    static aBFu8c_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_D(Test_aBFu8c_BFu0s_D, "aBFu8c_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_F()
{
  {
    init_simple_test("aBFu8c_BFu0s_F");
    static aBFu8c_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_F(Test_aBFu8c_BFu0s_F, "aBFu8c_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_I()
{
  {
    init_simple_test("aBFu8c_BFu0s_I");
    static aBFu8c_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_I(Test_aBFu8c_BFu0s_I, "aBFu8c_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ip");
    static aBFu8c_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ip(Test_aBFu8c_BFu0s_Ip, "aBFu8c_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_L()
{
  {
    init_simple_test("aBFu8c_BFu0s_L");
    static aBFu8c_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_L(Test_aBFu8c_BFu0s_L, "aBFu8c_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_S()
{
  {
    init_simple_test("aBFu8c_BFu0s_S");
    static aBFu8c_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_S(Test_aBFu8c_BFu0s_S, "aBFu8c_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0s_Uc");
    static aBFu8c_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Uc(Test_aBFu8c_BFu0s_Uc, "aBFu8c_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ui");
    static aBFu8c_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ui(Test_aBFu8c_BFu0s_Ui, "aBFu8c_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ul");
    static aBFu8c_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ul(Test_aBFu8c_BFu0s_Ul, "aBFu8c_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Us()
{
  {
    init_simple_test("aBFu8c_BFu0s_Us");
    static aBFu8c_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Us(Test_aBFu8c_BFu0s_Us, "aBFu8c_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0s_Vp");
    static aBFu8c_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Vp(Test_aBFu8c_BFu0s_Vp, "aBFu8c_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0c");
    static aBFu8c_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0c(Test_aBFu8c_BFu15i_BFu0c, "aBFu8c_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0i");
    static aBFu8c_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0i(Test_aBFu8c_BFu15i_BFu0i, "aBFu8c_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0ll");
    static aBFu8c_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0ll(Test_aBFu8c_BFu15i_BFu0ll, "aBFu8c_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0s");
    static aBFu8c_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0s(Test_aBFu8c_BFu15i_BFu0s, "aBFu8c_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0c");
    static aBFu8c_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0c(Test_aBFu8c_BFu15ll_BFu0c, "aBFu8c_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0i");
    static aBFu8c_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0i(Test_aBFu8c_BFu15ll_BFu0i, "aBFu8c_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0ll");
    static aBFu8c_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0ll(Test_aBFu8c_BFu15ll_BFu0ll, "aBFu8c_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0s");
    static aBFu8c_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0s(Test_aBFu8c_BFu15ll_BFu0s, "aBFu8c_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0c");
    static aBFu8c_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0c(Test_aBFu8c_BFu15s_BFu0c, "aBFu8c_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0i");
    static aBFu8c_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0i(Test_aBFu8c_BFu15s_BFu0i, "aBFu8c_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0ll");
    static aBFu8c_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0ll(Test_aBFu8c_BFu15s_BFu0ll, "aBFu8c_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0s");
    static aBFu8c_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0s(Test_aBFu8c_BFu15s_BFu0s, "aBFu8c_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0c");
    static aBFu8c_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0c(Test_aBFu8c_BFu16i_BFu0c, "aBFu8c_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0i");
    static aBFu8c_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0i(Test_aBFu8c_BFu16i_BFu0i, "aBFu8c_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0ll");
    static aBFu8c_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0ll(Test_aBFu8c_BFu16i_BFu0ll, "aBFu8c_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0s");
    static aBFu8c_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0s(Test_aBFu8c_BFu16i_BFu0s, "aBFu8c_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0c");
    static aBFu8c_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0c(Test_aBFu8c_BFu16ll_BFu0c, "aBFu8c_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0i");
    static aBFu8c_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0i(Test_aBFu8c_BFu16ll_BFu0i, "aBFu8c_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0ll");
    static aBFu8c_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0ll(Test_aBFu8c_BFu16ll_BFu0ll, "aBFu8c_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0s");
    static aBFu8c_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0s(Test_aBFu8c_BFu16ll_BFu0s, "aBFu8c_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0c");
    static aBFu8c_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0c(Test_aBFu8c_BFu16s_BFu0c, "aBFu8c_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0i");
    static aBFu8c_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0i(Test_aBFu8c_BFu16s_BFu0i, "aBFu8c_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0ll");
    static aBFu8c_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0ll(Test_aBFu8c_BFu16s_BFu0ll, "aBFu8c_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0s");
    static aBFu8c_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0s(Test_aBFu8c_BFu16s_BFu0s, "aBFu8c_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0c");
    static aBFu8c_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0c(Test_aBFu8c_BFu17i_BFu0c, "aBFu8c_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0i");
    static aBFu8c_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0i(Test_aBFu8c_BFu17i_BFu0i, "aBFu8c_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0ll");
    static aBFu8c_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0ll(Test_aBFu8c_BFu17i_BFu0ll, "aBFu8c_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0s");
    static aBFu8c_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0s(Test_aBFu8c_BFu17i_BFu0s, "aBFu8c_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0c");
    static aBFu8c_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0c(Test_aBFu8c_BFu17ll_BFu0c, "aBFu8c_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0i");
    static aBFu8c_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0i(Test_aBFu8c_BFu17ll_BFu0i, "aBFu8c_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0ll");
    static aBFu8c_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0ll(Test_aBFu8c_BFu17ll_BFu0ll, "aBFu8c_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0s");
    static aBFu8c_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0s(Test_aBFu8c_BFu17ll_BFu0s, "aBFu8c_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0c");
    static aBFu8c_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0c(Test_aBFu8c_BFu1c_BFu0c, "aBFu8c_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0i");
    static aBFu8c_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0i(Test_aBFu8c_BFu1c_BFu0i, "aBFu8c_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0ll");
    static aBFu8c_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0ll(Test_aBFu8c_BFu1c_BFu0ll, "aBFu8c_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0s");
    static aBFu8c_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0s(Test_aBFu8c_BFu1c_BFu0s, "aBFu8c_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0c");
    static aBFu8c_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0c(Test_aBFu8c_BFu1i_BFu0c, "aBFu8c_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0i");
    static aBFu8c_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0i(Test_aBFu8c_BFu1i_BFu0i, "aBFu8c_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0ll");
    static aBFu8c_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0ll(Test_aBFu8c_BFu1i_BFu0ll, "aBFu8c_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0s");
    static aBFu8c_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0s(Test_aBFu8c_BFu1i_BFu0s, "aBFu8c_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0c");
    static aBFu8c_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0c(Test_aBFu8c_BFu1ll_BFu0c, "aBFu8c_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0i");
    static aBFu8c_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0i(Test_aBFu8c_BFu1ll_BFu0i, "aBFu8c_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0ll");
    static aBFu8c_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0ll(Test_aBFu8c_BFu1ll_BFu0ll, "aBFu8c_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0s");
    static aBFu8c_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0s(Test_aBFu8c_BFu1ll_BFu0s, "aBFu8c_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0c");
    static aBFu8c_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0c(Test_aBFu8c_BFu1s_BFu0c, "aBFu8c_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0i");
    static aBFu8c_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0i(Test_aBFu8c_BFu1s_BFu0i, "aBFu8c_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0ll");
    static aBFu8c_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0ll(Test_aBFu8c_BFu1s_BFu0ll, "aBFu8c_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0s");
    static aBFu8c_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0s(Test_aBFu8c_BFu1s_BFu0s, "aBFu8c_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0c");
    static aBFu8c_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0c(Test_aBFu8c_BFu31i_BFu0c, "aBFu8c_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0i");
    static aBFu8c_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0i(Test_aBFu8c_BFu31i_BFu0i, "aBFu8c_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0ll");
    static aBFu8c_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0ll(Test_aBFu8c_BFu31i_BFu0ll, "aBFu8c_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0s");
    static aBFu8c_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0s(Test_aBFu8c_BFu31i_BFu0s, "aBFu8c_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0c");
    static aBFu8c_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0c(Test_aBFu8c_BFu31ll_BFu0c, "aBFu8c_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0i");
    static aBFu8c_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0i(Test_aBFu8c_BFu31ll_BFu0i, "aBFu8c_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0ll");
    static aBFu8c_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0ll(Test_aBFu8c_BFu31ll_BFu0ll, "aBFu8c_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0s");
    static aBFu8c_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0s(Test_aBFu8c_BFu31ll_BFu0s, "aBFu8c_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0c");
    static aBFu8c_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0c(Test_aBFu8c_BFu32i_BFu0c, "aBFu8c_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0i");
    static aBFu8c_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0i(Test_aBFu8c_BFu32i_BFu0i, "aBFu8c_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0ll");
    static aBFu8c_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0ll(Test_aBFu8c_BFu32i_BFu0ll, "aBFu8c_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0s");
    static aBFu8c_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0s(Test_aBFu8c_BFu32i_BFu0s, "aBFu8c_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0c");
    static aBFu8c_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0c(Test_aBFu8c_BFu32ll_BFu0c, "aBFu8c_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0i");
    static aBFu8c_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0i(Test_aBFu8c_BFu32ll_BFu0i, "aBFu8c_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0ll");
    static aBFu8c_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0ll(Test_aBFu8c_BFu32ll_BFu0ll, "aBFu8c_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0s");
    static aBFu8c_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0s(Test_aBFu8c_BFu32ll_BFu0s, "aBFu8c_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0c");
    static aBFu8c_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0c(Test_aBFu8c_BFu33_BFu0c, "aBFu8c_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0i");
    static aBFu8c_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0i(Test_aBFu8c_BFu33_BFu0i, "aBFu8c_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0ll");
    static aBFu8c_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0ll(Test_aBFu8c_BFu33_BFu0ll, "aBFu8c_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0s");
    static aBFu8c_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0s(Test_aBFu8c_BFu33_BFu0s, "aBFu8c_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0c");
    static aBFu8c_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0c(Test_aBFu8c_BFu7c_BFu0c, "aBFu8c_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0i");
    static aBFu8c_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0i(Test_aBFu8c_BFu7c_BFu0i, "aBFu8c_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0ll");
    static aBFu8c_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0ll(Test_aBFu8c_BFu7c_BFu0ll, "aBFu8c_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0s");
    static aBFu8c_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0s(Test_aBFu8c_BFu7c_BFu0s, "aBFu8c_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0c");
    static aBFu8c_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0c(Test_aBFu8c_BFu7i_BFu0c, "aBFu8c_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0i");
    static aBFu8c_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0i(Test_aBFu8c_BFu7i_BFu0i, "aBFu8c_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0ll");
    static aBFu8c_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0ll(Test_aBFu8c_BFu7i_BFu0ll, "aBFu8c_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0s");
    static aBFu8c_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0s(Test_aBFu8c_BFu7i_BFu0s, "aBFu8c_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0c");
    static aBFu8c_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0c(Test_aBFu8c_BFu7ll_BFu0c, "aBFu8c_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0i");
    static aBFu8c_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0i(Test_aBFu8c_BFu7ll_BFu0i, "aBFu8c_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0ll");
    static aBFu8c_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0ll(Test_aBFu8c_BFu7ll_BFu0ll, "aBFu8c_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0s");
    static aBFu8c_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0s(Test_aBFu8c_BFu7ll_BFu0s, "aBFu8c_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0c");
    static aBFu8c_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0c(Test_aBFu8c_BFu7s_BFu0c, "aBFu8c_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0i");
    static aBFu8c_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0i(Test_aBFu8c_BFu7s_BFu0i, "aBFu8c_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0ll");
    static aBFu8c_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0ll(Test_aBFu8c_BFu7s_BFu0ll, "aBFu8c_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0s");
    static aBFu8c_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0s(Test_aBFu8c_BFu7s_BFu0s, "aBFu8c_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0c");
    static aBFu8c_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0c(Test_aBFu8c_BFu8c_BFu0c, "aBFu8c_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0i");
    static aBFu8c_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0i(Test_aBFu8c_BFu8c_BFu0i, "aBFu8c_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0ll");
    static aBFu8c_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0ll(Test_aBFu8c_BFu8c_BFu0ll, "aBFu8c_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0s");
    static aBFu8c_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0s(Test_aBFu8c_BFu8c_BFu0s, "aBFu8c_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0c");
    static aBFu8c_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0c(Test_aBFu8c_BFu8i_BFu0c, "aBFu8c_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0i");
    static aBFu8c_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0i(Test_aBFu8c_BFu8i_BFu0i, "aBFu8c_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0ll");
    static aBFu8c_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0ll(Test_aBFu8c_BFu8i_BFu0ll, "aBFu8c_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0s");
    static aBFu8c_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0s(Test_aBFu8c_BFu8i_BFu0s, "aBFu8c_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0c");
    static aBFu8c_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0c(Test_aBFu8c_BFu8ll_BFu0c, "aBFu8c_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0i");
    static aBFu8c_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0i(Test_aBFu8c_BFu8ll_BFu0i, "aBFu8c_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0ll");
    static aBFu8c_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0ll(Test_aBFu8c_BFu8ll_BFu0ll, "aBFu8c_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0s");
    static aBFu8c_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0s(Test_aBFu8c_BFu8ll_BFu0s, "aBFu8c_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0c");
    static aBFu8c_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0c(Test_aBFu8c_BFu8s_BFu0c, "aBFu8c_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0i");
    static aBFu8c_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0i(Test_aBFu8c_BFu8s_BFu0i, "aBFu8c_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0ll");
    static aBFu8c_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0ll(Test_aBFu8c_BFu8s_BFu0ll, "aBFu8c_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0s");
    static aBFu8c_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0s(Test_aBFu8c_BFu8s_BFu0s, "aBFu8c_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0c");
    static aBFu8c_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0c(Test_aBFu8c_BFu9i_BFu0c, "aBFu8c_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0i");
    static aBFu8c_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0i(Test_aBFu8c_BFu9i_BFu0i, "aBFu8c_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0ll");
    static aBFu8c_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0ll(Test_aBFu8c_BFu9i_BFu0ll, "aBFu8c_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0s");
    static aBFu8c_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0s(Test_aBFu8c_BFu9i_BFu0s, "aBFu8c_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0c");
    static aBFu8c_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0c(Test_aBFu8c_BFu9ll_BFu0c, "aBFu8c_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0i");
    static aBFu8c_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0i(Test_aBFu8c_BFu9ll_BFu0i, "aBFu8c_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0ll");
    static aBFu8c_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0ll(Test_aBFu8c_BFu9ll_BFu0ll, "aBFu8c_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0s");
    static aBFu8c_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0s(Test_aBFu8c_BFu9ll_BFu0s, "aBFu8c_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0c");
    static aBFu8c_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0c(Test_aBFu8c_BFu9s_BFu0c, "aBFu8c_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0i");
    static aBFu8c_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0i(Test_aBFu8c_BFu9s_BFu0i, "aBFu8c_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0ll");
    static aBFu8c_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0ll(Test_aBFu8c_BFu9s_BFu0ll, "aBFu8c_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0s");
    static aBFu8c_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0s(Test_aBFu8c_BFu9s_BFu0s, "aBFu8c_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0c()
{
  {
    init_simple_test("aBFu8c_C_BFu0c");
    static aBFu8c_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0c(Test_aBFu8c_C_BFu0c, "aBFu8c_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0i()
{
  {
    init_simple_test("aBFu8c_C_BFu0i");
    static aBFu8c_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0i(Test_aBFu8c_C_BFu0i, "aBFu8c_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0ll()
{
  {
    init_simple_test("aBFu8c_C_BFu0ll");
    static aBFu8c_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0ll(Test_aBFu8c_C_BFu0ll, "aBFu8c_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0s()
{
  {
    init_simple_test("aBFu8c_C_BFu0s");
    static aBFu8c_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0s(Test_aBFu8c_C_BFu0s, "aBFu8c_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0c()
{
  {
    init_simple_test("aBFu8c_D_BFu0c");
    static aBFu8c_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0c(Test_aBFu8c_D_BFu0c, "aBFu8c_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0i()
{
  {
    init_simple_test("aBFu8c_D_BFu0i");
    static aBFu8c_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0i(Test_aBFu8c_D_BFu0i, "aBFu8c_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0ll()
{
  {
    init_simple_test("aBFu8c_D_BFu0ll");
    static aBFu8c_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0ll(Test_aBFu8c_D_BFu0ll, "aBFu8c_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0s()
{
  {
    init_simple_test("aBFu8c_D_BFu0s");
    static aBFu8c_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0s(Test_aBFu8c_D_BFu0s, "aBFu8c_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0c()
{
  {
    init_simple_test("aBFu8c_F_BFu0c");
    static aBFu8c_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0c(Test_aBFu8c_F_BFu0c, "aBFu8c_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0i()
{
  {
    init_simple_test("aBFu8c_F_BFu0i");
    static aBFu8c_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0i(Test_aBFu8c_F_BFu0i, "aBFu8c_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0ll()
{
  {
    init_simple_test("aBFu8c_F_BFu0ll");
    static aBFu8c_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0ll(Test_aBFu8c_F_BFu0ll, "aBFu8c_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0s()
{
  {
    init_simple_test("aBFu8c_F_BFu0s");
    static aBFu8c_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0s(Test_aBFu8c_F_BFu0s, "aBFu8c_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0c()
{
  {
    init_simple_test("aBFu8c_I_BFu0c");
    static aBFu8c_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0c(Test_aBFu8c_I_BFu0c, "aBFu8c_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0i()
{
  {
    init_simple_test("aBFu8c_I_BFu0i");
    static aBFu8c_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0i(Test_aBFu8c_I_BFu0i, "aBFu8c_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0ll()
{
  {
    init_simple_test("aBFu8c_I_BFu0ll");
    static aBFu8c_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0ll(Test_aBFu8c_I_BFu0ll, "aBFu8c_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0s()
{
  {
    init_simple_test("aBFu8c_I_BFu0s");
    static aBFu8c_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0s(Test_aBFu8c_I_BFu0s, "aBFu8c_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0c");
    static aBFu8c_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0c(Test_aBFu8c_Ip_BFu0c, "aBFu8c_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0i");
    static aBFu8c_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0i(Test_aBFu8c_Ip_BFu0i, "aBFu8c_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0ll");
    static aBFu8c_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0ll(Test_aBFu8c_Ip_BFu0ll, "aBFu8c_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0s");
    static aBFu8c_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0s(Test_aBFu8c_Ip_BFu0s, "aBFu8c_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0c()
{
  {
    init_simple_test("aBFu8c_L_BFu0c");
    static aBFu8c_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0c(Test_aBFu8c_L_BFu0c, "aBFu8c_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0i()
{
  {
    init_simple_test("aBFu8c_L_BFu0i");
    static aBFu8c_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0i(Test_aBFu8c_L_BFu0i, "aBFu8c_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0ll()
{
  {
    init_simple_test("aBFu8c_L_BFu0ll");
    static aBFu8c_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0ll(Test_aBFu8c_L_BFu0ll, "aBFu8c_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0s()
{
  {
    init_simple_test("aBFu8c_L_BFu0s");
    static aBFu8c_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0s(Test_aBFu8c_L_BFu0s, "aBFu8c_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0c()
{
  {
    init_simple_test("aBFu8c_S_BFu0c");
    static aBFu8c_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0c(Test_aBFu8c_S_BFu0c, "aBFu8c_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0i()
{
  {
    init_simple_test("aBFu8c_S_BFu0i");
    static aBFu8c_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0i(Test_aBFu8c_S_BFu0i, "aBFu8c_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0ll()
{
  {
    init_simple_test("aBFu8c_S_BFu0ll");
    static aBFu8c_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0ll(Test_aBFu8c_S_BFu0ll, "aBFu8c_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0s()
{
  {
    init_simple_test("aBFu8c_S_BFu0s");
    static aBFu8c_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0s(Test_aBFu8c_S_BFu0s, "aBFu8c_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0c");
    static aBFu8c_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0c(Test_aBFu8c_Uc_BFu0c, "aBFu8c_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0i");
    static aBFu8c_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0i(Test_aBFu8c_Uc_BFu0i, "aBFu8c_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0ll");
    static aBFu8c_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0ll(Test_aBFu8c_Uc_BFu0ll, "aBFu8c_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0s");
    static aBFu8c_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0s(Test_aBFu8c_Uc_BFu0s, "aBFu8c_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0c");
    static aBFu8c_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0c(Test_aBFu8c_Ui_BFu0c, "aBFu8c_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0i");
    static aBFu8c_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0i(Test_aBFu8c_Ui_BFu0i, "aBFu8c_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0ll");
    static aBFu8c_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0ll(Test_aBFu8c_Ui_BFu0ll, "aBFu8c_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0s");
    static aBFu8c_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0s(Test_aBFu8c_Ui_BFu0s, "aBFu8c_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0c");
    static aBFu8c_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0c(Test_aBFu8c_Ul_BFu0c, "aBFu8c_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0i");
    static aBFu8c_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0i(Test_aBFu8c_Ul_BFu0i, "aBFu8c_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0ll");
    static aBFu8c_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0ll(Test_aBFu8c_Ul_BFu0ll, "aBFu8c_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0s");
    static aBFu8c_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0s(Test_aBFu8c_Ul_BFu0s, "aBFu8c_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0c()
{
  {
    init_simple_test("aBFu8c_Us_BFu0c");
    static aBFu8c_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0c(Test_aBFu8c_Us_BFu0c, "aBFu8c_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0i()
{
  {
    init_simple_test("aBFu8c_Us_BFu0i");
    static aBFu8c_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0i(Test_aBFu8c_Us_BFu0i, "aBFu8c_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Us_BFu0ll");
    static aBFu8c_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0ll(Test_aBFu8c_Us_BFu0ll, "aBFu8c_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0s()
{
  {
    init_simple_test("aBFu8c_Us_BFu0s");
    static aBFu8c_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0s(Test_aBFu8c_Us_BFu0s, "aBFu8c_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0c");
    static aBFu8c_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0c(Test_aBFu8c_Vp_BFu0c, "aBFu8c_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0i");
    static aBFu8c_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0i(Test_aBFu8c_Vp_BFu0i, "aBFu8c_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0ll");
    static aBFu8c_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0ll(Test_aBFu8c_Vp_BFu0ll, "aBFu8c_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0s");
    static aBFu8c_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0s(Test_aBFu8c_Vp_BFu0s, "aBFu8c_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0c");
    static aBFu8i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c(Test_aBFu8i_BFu0c, "aBFu8i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0c");
    static aBFu8i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0c(Test_aBFu8i_BFu0c_BFu0c, "aBFu8i_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0i");
    static aBFu8i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0i(Test_aBFu8i_BFu0c_BFu0i, "aBFu8i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0ll");
    static aBFu8i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0ll(Test_aBFu8i_BFu0c_BFu0ll, "aBFu8i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0s");
    static aBFu8i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0s(Test_aBFu8i_BFu0c_BFu0s, "aBFu8i_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15i");
    static aBFu8i_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15i(Test_aBFu8i_BFu0c_BFu15i, "aBFu8i_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15ll");
    static aBFu8i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15ll(Test_aBFu8i_BFu0c_BFu15ll, "aBFu8i_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15s");
    static aBFu8i_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15s(Test_aBFu8i_BFu0c_BFu15s, "aBFu8i_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16i");
    static aBFu8i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16i(Test_aBFu8i_BFu0c_BFu16i, "aBFu8i_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16ll");
    static aBFu8i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16ll(Test_aBFu8i_BFu0c_BFu16ll, "aBFu8i_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16s");
    static aBFu8i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16s(Test_aBFu8i_BFu0c_BFu16s, "aBFu8i_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu17i");
    static aBFu8i_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu17i(Test_aBFu8i_BFu0c_BFu17i, "aBFu8i_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu17ll");
    static aBFu8i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu17ll(Test_aBFu8i_BFu0c_BFu17ll, "aBFu8i_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1c");
    static aBFu8i_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1c(Test_aBFu8i_BFu0c_BFu1c, "aBFu8i_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1i");
    static aBFu8i_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1i(Test_aBFu8i_BFu0c_BFu1i, "aBFu8i_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1ll");
    static aBFu8i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1ll(Test_aBFu8i_BFu0c_BFu1ll, "aBFu8i_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1s");
    static aBFu8i_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1s(Test_aBFu8i_BFu0c_BFu1s, "aBFu8i_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu31i");
    static aBFu8i_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu31i(Test_aBFu8i_BFu0c_BFu31i, "aBFu8i_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu31ll");
    static aBFu8i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu31ll(Test_aBFu8i_BFu0c_BFu31ll, "aBFu8i_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu32i");
    static aBFu8i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu32i(Test_aBFu8i_BFu0c_BFu32i, "aBFu8i_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu32ll");
    static aBFu8i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu32ll(Test_aBFu8i_BFu0c_BFu32ll, "aBFu8i_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu33");
    static aBFu8i_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu33(Test_aBFu8i_BFu0c_BFu33, "aBFu8i_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7c");
    static aBFu8i_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7c(Test_aBFu8i_BFu0c_BFu7c, "aBFu8i_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7i");
    static aBFu8i_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7i(Test_aBFu8i_BFu0c_BFu7i, "aBFu8i_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7ll");
    static aBFu8i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7ll(Test_aBFu8i_BFu0c_BFu7ll, "aBFu8i_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7s");
    static aBFu8i_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7s(Test_aBFu8i_BFu0c_BFu7s, "aBFu8i_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8c");
    static aBFu8i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8c(Test_aBFu8i_BFu0c_BFu8c, "aBFu8i_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8i");
    static aBFu8i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8i(Test_aBFu8i_BFu0c_BFu8i, "aBFu8i_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8ll");
    static aBFu8i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8ll(Test_aBFu8i_BFu0c_BFu8ll, "aBFu8i_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8s");
    static aBFu8i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8s(Test_aBFu8i_BFu0c_BFu8s, "aBFu8i_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9i");
    static aBFu8i_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9i(Test_aBFu8i_BFu0c_BFu9i, "aBFu8i_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9ll");
    static aBFu8i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9ll(Test_aBFu8i_BFu0c_BFu9ll, "aBFu8i_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9s");
    static aBFu8i_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9s(Test_aBFu8i_BFu0c_BFu9s, "aBFu8i_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_C()
{
  {
    init_simple_test("aBFu8i_BFu0c_C");
    static aBFu8i_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_C(Test_aBFu8i_BFu0c_C, "aBFu8i_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_D()
{
  {
    init_simple_test("aBFu8i_BFu0c_D");
    static aBFu8i_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_D(Test_aBFu8i_BFu0c_D, "aBFu8i_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_F()
{
  {
    init_simple_test("aBFu8i_BFu0c_F");
    static aBFu8i_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_F(Test_aBFu8i_BFu0c_F, "aBFu8i_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_I()
{
  {
    init_simple_test("aBFu8i_BFu0c_I");
    static aBFu8i_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_I(Test_aBFu8i_BFu0c_I, "aBFu8i_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ip");
    static aBFu8i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ip(Test_aBFu8i_BFu0c_Ip, "aBFu8i_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_L()
{
  {
    init_simple_test("aBFu8i_BFu0c_L");
    static aBFu8i_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_L(Test_aBFu8i_BFu0c_L, "aBFu8i_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_S()
{
  {
    init_simple_test("aBFu8i_BFu0c_S");
    static aBFu8i_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_S(Test_aBFu8i_BFu0c_S, "aBFu8i_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0c_Uc");
    static aBFu8i_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Uc(Test_aBFu8i_BFu0c_Uc, "aBFu8i_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ui");
    static aBFu8i_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ui(Test_aBFu8i_BFu0c_Ui, "aBFu8i_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ul");
    static aBFu8i_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ul(Test_aBFu8i_BFu0c_Ul, "aBFu8i_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Us()
{
  {
    init_simple_test("aBFu8i_BFu0c_Us");
    static aBFu8i_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Us(Test_aBFu8i_BFu0c_Us, "aBFu8i_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0c_Vp");
    static aBFu8i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Vp(Test_aBFu8i_BFu0c_Vp, "aBFu8i_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0i");
    static aBFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i(Test_aBFu8i_BFu0i, "aBFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0c");
    static aBFu8i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0c(Test_aBFu8i_BFu0i_BFu0c, "aBFu8i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0i");
    static aBFu8i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0i(Test_aBFu8i_BFu0i_BFu0i, "aBFu8i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0ll");
    static aBFu8i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0ll(Test_aBFu8i_BFu0i_BFu0ll, "aBFu8i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0s");
    static aBFu8i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0s(Test_aBFu8i_BFu0i_BFu0s, "aBFu8i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15i");
    static aBFu8i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15i(Test_aBFu8i_BFu0i_BFu15i, "aBFu8i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15ll");
    static aBFu8i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15ll(Test_aBFu8i_BFu0i_BFu15ll, "aBFu8i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15s");
    static aBFu8i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15s(Test_aBFu8i_BFu0i_BFu15s, "aBFu8i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16i");
    static aBFu8i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16i(Test_aBFu8i_BFu0i_BFu16i, "aBFu8i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16ll");
    static aBFu8i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16ll(Test_aBFu8i_BFu0i_BFu16ll, "aBFu8i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16s");
    static aBFu8i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16s(Test_aBFu8i_BFu0i_BFu16s, "aBFu8i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu17i");
    static aBFu8i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu17i(Test_aBFu8i_BFu0i_BFu17i, "aBFu8i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu17ll");
    static aBFu8i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu17ll(Test_aBFu8i_BFu0i_BFu17ll, "aBFu8i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1c");
    static aBFu8i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1c(Test_aBFu8i_BFu0i_BFu1c, "aBFu8i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1i");
    static aBFu8i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1i(Test_aBFu8i_BFu0i_BFu1i, "aBFu8i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1ll");
    static aBFu8i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1ll(Test_aBFu8i_BFu0i_BFu1ll, "aBFu8i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1s");
    static aBFu8i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1s(Test_aBFu8i_BFu0i_BFu1s, "aBFu8i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu31i");
    static aBFu8i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu31i(Test_aBFu8i_BFu0i_BFu31i, "aBFu8i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu31ll");
    static aBFu8i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu31ll(Test_aBFu8i_BFu0i_BFu31ll, "aBFu8i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu32i");
    static aBFu8i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu32i(Test_aBFu8i_BFu0i_BFu32i, "aBFu8i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu32ll");
    static aBFu8i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu32ll(Test_aBFu8i_BFu0i_BFu32ll, "aBFu8i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu33");
    static aBFu8i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8i_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu33(Test_aBFu8i_BFu0i_BFu33, "aBFu8i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7c");
    static aBFu8i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7c(Test_aBFu8i_BFu0i_BFu7c, "aBFu8i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7i");
    static aBFu8i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7i(Test_aBFu8i_BFu0i_BFu7i, "aBFu8i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7ll");
    static aBFu8i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7ll(Test_aBFu8i_BFu0i_BFu7ll, "aBFu8i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7s");
    static aBFu8i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7s(Test_aBFu8i_BFu0i_BFu7s, "aBFu8i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8c");
    static aBFu8i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8c(Test_aBFu8i_BFu0i_BFu8c, "aBFu8i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8i");
    static aBFu8i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8i(Test_aBFu8i_BFu0i_BFu8i, "aBFu8i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8ll");
    static aBFu8i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8ll(Test_aBFu8i_BFu0i_BFu8ll, "aBFu8i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8s");
    static aBFu8i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8s(Test_aBFu8i_BFu0i_BFu8s, "aBFu8i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9i");
    static aBFu8i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9i(Test_aBFu8i_BFu0i_BFu9i, "aBFu8i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9ll");
    static aBFu8i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9ll(Test_aBFu8i_BFu0i_BFu9ll, "aBFu8i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9s");
    static aBFu8i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9s(Test_aBFu8i_BFu0i_BFu9s, "aBFu8i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_C()
{
  {
    init_simple_test("aBFu8i_BFu0i_C");
    static aBFu8i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_C(Test_aBFu8i_BFu0i_C, "aBFu8i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_D()
{
  {
    init_simple_test("aBFu8i_BFu0i_D");
    static aBFu8i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_D(Test_aBFu8i_BFu0i_D, "aBFu8i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_F()
{
  {
    init_simple_test("aBFu8i_BFu0i_F");
    static aBFu8i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_F(Test_aBFu8i_BFu0i_F, "aBFu8i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_I()
{
  {
    init_simple_test("aBFu8i_BFu0i_I");
    static aBFu8i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_I(Test_aBFu8i_BFu0i_I, "aBFu8i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ip");
    static aBFu8i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ip(Test_aBFu8i_BFu0i_Ip, "aBFu8i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_L()
{
  {
    init_simple_test("aBFu8i_BFu0i_L");
    static aBFu8i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_L(Test_aBFu8i_BFu0i_L, "aBFu8i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_S()
{
  {
    init_simple_test("aBFu8i_BFu0i_S");
    static aBFu8i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_S(Test_aBFu8i_BFu0i_S, "aBFu8i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0i_Uc");
    static aBFu8i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Uc(Test_aBFu8i_BFu0i_Uc, "aBFu8i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ui");
    static aBFu8i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ui(Test_aBFu8i_BFu0i_Ui, "aBFu8i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ul");
    static aBFu8i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ul(Test_aBFu8i_BFu0i_Ul, "aBFu8i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Us()
{
  {
    init_simple_test("aBFu8i_BFu0i_Us");
    static aBFu8i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Us(Test_aBFu8i_BFu0i_Us, "aBFu8i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0i_Vp");
    static aBFu8i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Vp(Test_aBFu8i_BFu0i_Vp, "aBFu8i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll");
    static aBFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll(Test_aBFu8i_BFu0ll, "aBFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0c");
    static aBFu8i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0c(Test_aBFu8i_BFu0ll_BFu0c, "aBFu8i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0i");
    static aBFu8i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0i(Test_aBFu8i_BFu0ll_BFu0i, "aBFu8i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0ll");
    static aBFu8i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0ll(Test_aBFu8i_BFu0ll_BFu0ll, "aBFu8i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0s");
    static aBFu8i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0s(Test_aBFu8i_BFu0ll_BFu0s, "aBFu8i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15i");
    static aBFu8i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15i(Test_aBFu8i_BFu0ll_BFu15i, "aBFu8i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15ll");
    static aBFu8i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15ll(Test_aBFu8i_BFu0ll_BFu15ll, "aBFu8i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15s");
    static aBFu8i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15s(Test_aBFu8i_BFu0ll_BFu15s, "aBFu8i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16i");
    static aBFu8i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16i(Test_aBFu8i_BFu0ll_BFu16i, "aBFu8i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16ll");
    static aBFu8i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16ll(Test_aBFu8i_BFu0ll_BFu16ll, "aBFu8i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16s");
    static aBFu8i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16s(Test_aBFu8i_BFu0ll_BFu16s, "aBFu8i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu17i");
    static aBFu8i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu17i(Test_aBFu8i_BFu0ll_BFu17i, "aBFu8i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu17ll");
    static aBFu8i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu17ll(Test_aBFu8i_BFu0ll_BFu17ll, "aBFu8i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1c");
    static aBFu8i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1c(Test_aBFu8i_BFu0ll_BFu1c, "aBFu8i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1i");
    static aBFu8i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1i(Test_aBFu8i_BFu0ll_BFu1i, "aBFu8i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1ll");
    static aBFu8i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1ll(Test_aBFu8i_BFu0ll_BFu1ll, "aBFu8i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1s");
    static aBFu8i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1s(Test_aBFu8i_BFu0ll_BFu1s, "aBFu8i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu31i");
    static aBFu8i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu31i(Test_aBFu8i_BFu0ll_BFu31i, "aBFu8i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu31ll");
    static aBFu8i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu31ll(Test_aBFu8i_BFu0ll_BFu31ll, "aBFu8i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu32i");
    static aBFu8i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu32i(Test_aBFu8i_BFu0ll_BFu32i, "aBFu8i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu32ll");
    static aBFu8i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu32ll(Test_aBFu8i_BFu0ll_BFu32ll, "aBFu8i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu33");
    static aBFu8i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8i_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu33(Test_aBFu8i_BFu0ll_BFu33, "aBFu8i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7c");
    static aBFu8i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7c(Test_aBFu8i_BFu0ll_BFu7c, "aBFu8i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7i");
    static aBFu8i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7i(Test_aBFu8i_BFu0ll_BFu7i, "aBFu8i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7ll");
    static aBFu8i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7ll(Test_aBFu8i_BFu0ll_BFu7ll, "aBFu8i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7s");
    static aBFu8i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7s(Test_aBFu8i_BFu0ll_BFu7s, "aBFu8i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8c");
    static aBFu8i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8c(Test_aBFu8i_BFu0ll_BFu8c, "aBFu8i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8i");
    static aBFu8i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8i(Test_aBFu8i_BFu0ll_BFu8i, "aBFu8i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8ll");
    static aBFu8i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8ll(Test_aBFu8i_BFu0ll_BFu8ll, "aBFu8i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8s");
    static aBFu8i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8s(Test_aBFu8i_BFu0ll_BFu8s, "aBFu8i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9i");
    static aBFu8i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9i(Test_aBFu8i_BFu0ll_BFu9i, "aBFu8i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9ll");
    static aBFu8i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9ll(Test_aBFu8i_BFu0ll_BFu9ll, "aBFu8i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9s");
    static aBFu8i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9s(Test_aBFu8i_BFu0ll_BFu9s, "aBFu8i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_C()
{
  {
    init_simple_test("aBFu8i_BFu0ll_C");
    static aBFu8i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_C(Test_aBFu8i_BFu0ll_C, "aBFu8i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_D()
{
  {
    init_simple_test("aBFu8i_BFu0ll_D");
    static aBFu8i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_D(Test_aBFu8i_BFu0ll_D, "aBFu8i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_F()
{
  {
    init_simple_test("aBFu8i_BFu0ll_F");
    static aBFu8i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_F(Test_aBFu8i_BFu0ll_F, "aBFu8i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_I()
{
  {
    init_simple_test("aBFu8i_BFu0ll_I");
    static aBFu8i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_I(Test_aBFu8i_BFu0ll_I, "aBFu8i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ip");
    static aBFu8i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ip(Test_aBFu8i_BFu0ll_Ip, "aBFu8i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_L()
{
  {
    init_simple_test("aBFu8i_BFu0ll_L");
    static aBFu8i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_L(Test_aBFu8i_BFu0ll_L, "aBFu8i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_S()
{
  {
    init_simple_test("aBFu8i_BFu0ll_S");
    static aBFu8i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_S(Test_aBFu8i_BFu0ll_S, "aBFu8i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Uc");
    static aBFu8i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Uc(Test_aBFu8i_BFu0ll_Uc, "aBFu8i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ui");
    static aBFu8i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ui(Test_aBFu8i_BFu0ll_Ui, "aBFu8i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ul");
    static aBFu8i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ul(Test_aBFu8i_BFu0ll_Ul, "aBFu8i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Us");
    static aBFu8i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Us(Test_aBFu8i_BFu0ll_Us, "aBFu8i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Vp");
    static aBFu8i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Vp(Test_aBFu8i_BFu0ll_Vp, "aBFu8i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0s");
    static aBFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s(Test_aBFu8i_BFu0s, "aBFu8i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0c");
    static aBFu8i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0c(Test_aBFu8i_BFu0s_BFu0c, "aBFu8i_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0i");
    static aBFu8i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0i(Test_aBFu8i_BFu0s_BFu0i, "aBFu8i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0ll");
    static aBFu8i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0ll(Test_aBFu8i_BFu0s_BFu0ll, "aBFu8i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0s");
    static aBFu8i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0s(Test_aBFu8i_BFu0s_BFu0s, "aBFu8i_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15i");
    static aBFu8i_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15i(Test_aBFu8i_BFu0s_BFu15i, "aBFu8i_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15ll");
    static aBFu8i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15ll(Test_aBFu8i_BFu0s_BFu15ll, "aBFu8i_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15s");
    static aBFu8i_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15s(Test_aBFu8i_BFu0s_BFu15s, "aBFu8i_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16i");
    static aBFu8i_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16i(Test_aBFu8i_BFu0s_BFu16i, "aBFu8i_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16ll");
    static aBFu8i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16ll(Test_aBFu8i_BFu0s_BFu16ll, "aBFu8i_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16s");
    static aBFu8i_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16s(Test_aBFu8i_BFu0s_BFu16s, "aBFu8i_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu17i");
    static aBFu8i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu17i(Test_aBFu8i_BFu0s_BFu17i, "aBFu8i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu17ll");
    static aBFu8i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu17ll(Test_aBFu8i_BFu0s_BFu17ll, "aBFu8i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1c");
    static aBFu8i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1c(Test_aBFu8i_BFu0s_BFu1c, "aBFu8i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1i");
    static aBFu8i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1i(Test_aBFu8i_BFu0s_BFu1i, "aBFu8i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1ll");
    static aBFu8i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1ll(Test_aBFu8i_BFu0s_BFu1ll, "aBFu8i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1s");
    static aBFu8i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1s(Test_aBFu8i_BFu0s_BFu1s, "aBFu8i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu31i");
    static aBFu8i_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu31i(Test_aBFu8i_BFu0s_BFu31i, "aBFu8i_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu31ll");
    static aBFu8i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu31ll(Test_aBFu8i_BFu0s_BFu31ll, "aBFu8i_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu32i");
    static aBFu8i_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu32i(Test_aBFu8i_BFu0s_BFu32i, "aBFu8i_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu32ll");
    static aBFu8i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu32ll(Test_aBFu8i_BFu0s_BFu32ll, "aBFu8i_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu33");
    static aBFu8i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu33(Test_aBFu8i_BFu0s_BFu33, "aBFu8i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7c");
    static aBFu8i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7c(Test_aBFu8i_BFu0s_BFu7c, "aBFu8i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7i");
    static aBFu8i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7i(Test_aBFu8i_BFu0s_BFu7i, "aBFu8i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7ll");
    static aBFu8i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7ll(Test_aBFu8i_BFu0s_BFu7ll, "aBFu8i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7s");
    static aBFu8i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7s(Test_aBFu8i_BFu0s_BFu7s, "aBFu8i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8c");
    static aBFu8i_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8c(Test_aBFu8i_BFu0s_BFu8c, "aBFu8i_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8i");
    static aBFu8i_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8i(Test_aBFu8i_BFu0s_BFu8i, "aBFu8i_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8ll");
    static aBFu8i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8ll(Test_aBFu8i_BFu0s_BFu8ll, "aBFu8i_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8s");
    static aBFu8i_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8s(Test_aBFu8i_BFu0s_BFu8s, "aBFu8i_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9i");
    static aBFu8i_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9i(Test_aBFu8i_BFu0s_BFu9i, "aBFu8i_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9ll");
    static aBFu8i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9ll(Test_aBFu8i_BFu0s_BFu9ll, "aBFu8i_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9s");
    static aBFu8i_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9s(Test_aBFu8i_BFu0s_BFu9s, "aBFu8i_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_C()
{
  {
    init_simple_test("aBFu8i_BFu0s_C");
    static aBFu8i_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_C(Test_aBFu8i_BFu0s_C, "aBFu8i_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_D()
{
  {
    init_simple_test("aBFu8i_BFu0s_D");
    static aBFu8i_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_D(Test_aBFu8i_BFu0s_D, "aBFu8i_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_F()
{
  {
    init_simple_test("aBFu8i_BFu0s_F");
    static aBFu8i_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_F(Test_aBFu8i_BFu0s_F, "aBFu8i_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_I()
{
  {
    init_simple_test("aBFu8i_BFu0s_I");
    static aBFu8i_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_I(Test_aBFu8i_BFu0s_I, "aBFu8i_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ip");
    static aBFu8i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ip(Test_aBFu8i_BFu0s_Ip, "aBFu8i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_L()
{
  {
    init_simple_test("aBFu8i_BFu0s_L");
    static aBFu8i_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_L(Test_aBFu8i_BFu0s_L, "aBFu8i_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_S()
{
  {
    init_simple_test("aBFu8i_BFu0s_S");
    static aBFu8i_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_S(Test_aBFu8i_BFu0s_S, "aBFu8i_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0s_Uc");
    static aBFu8i_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Uc(Test_aBFu8i_BFu0s_Uc, "aBFu8i_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ui");
    static aBFu8i_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ui(Test_aBFu8i_BFu0s_Ui, "aBFu8i_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ul");
    static aBFu8i_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ul(Test_aBFu8i_BFu0s_Ul, "aBFu8i_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Us()
{
  {
    init_simple_test("aBFu8i_BFu0s_Us");
    static aBFu8i_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Us(Test_aBFu8i_BFu0s_Us, "aBFu8i_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0s_Vp");
    static aBFu8i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Vp(Test_aBFu8i_BFu0s_Vp, "aBFu8i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0c");
    static aBFu8i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0c(Test_aBFu8i_BFu15i_BFu0c, "aBFu8i_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0i");
    static aBFu8i_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0i(Test_aBFu8i_BFu15i_BFu0i, "aBFu8i_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0ll");
    static aBFu8i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0ll(Test_aBFu8i_BFu15i_BFu0ll, "aBFu8i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0s");
    static aBFu8i_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0s(Test_aBFu8i_BFu15i_BFu0s, "aBFu8i_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0c");
    static aBFu8i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0c(Test_aBFu8i_BFu15ll_BFu0c, "aBFu8i_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0i");
    static aBFu8i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0i(Test_aBFu8i_BFu15ll_BFu0i, "aBFu8i_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0ll");
    static aBFu8i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0ll(Test_aBFu8i_BFu15ll_BFu0ll, "aBFu8i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0s");
    static aBFu8i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0s(Test_aBFu8i_BFu15ll_BFu0s, "aBFu8i_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0c");
    static aBFu8i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0c(Test_aBFu8i_BFu15s_BFu0c, "aBFu8i_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0i");
    static aBFu8i_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0i(Test_aBFu8i_BFu15s_BFu0i, "aBFu8i_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0ll");
    static aBFu8i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0ll(Test_aBFu8i_BFu15s_BFu0ll, "aBFu8i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0s");
    static aBFu8i_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0s(Test_aBFu8i_BFu15s_BFu0s, "aBFu8i_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0c");
    static aBFu8i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0c(Test_aBFu8i_BFu16i_BFu0c, "aBFu8i_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0i");
    static aBFu8i_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0i(Test_aBFu8i_BFu16i_BFu0i, "aBFu8i_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0ll");
    static aBFu8i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0ll(Test_aBFu8i_BFu16i_BFu0ll, "aBFu8i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0s");
    static aBFu8i_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0s(Test_aBFu8i_BFu16i_BFu0s, "aBFu8i_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0c");
    static aBFu8i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0c(Test_aBFu8i_BFu16ll_BFu0c, "aBFu8i_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0i");
    static aBFu8i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0i(Test_aBFu8i_BFu16ll_BFu0i, "aBFu8i_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0ll");
    static aBFu8i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0ll(Test_aBFu8i_BFu16ll_BFu0ll, "aBFu8i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0s");
    static aBFu8i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0s(Test_aBFu8i_BFu16ll_BFu0s, "aBFu8i_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0c");
    static aBFu8i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0c(Test_aBFu8i_BFu16s_BFu0c, "aBFu8i_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0i");
    static aBFu8i_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0i(Test_aBFu8i_BFu16s_BFu0i, "aBFu8i_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0ll");
    static aBFu8i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0ll(Test_aBFu8i_BFu16s_BFu0ll, "aBFu8i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0s");
    static aBFu8i_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0s(Test_aBFu8i_BFu16s_BFu0s, "aBFu8i_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0c");
    static aBFu8i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0c(Test_aBFu8i_BFu17i_BFu0c, "aBFu8i_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0i");
    static aBFu8i_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0i(Test_aBFu8i_BFu17i_BFu0i, "aBFu8i_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0ll");
    static aBFu8i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0ll(Test_aBFu8i_BFu17i_BFu0ll, "aBFu8i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0s");
    static aBFu8i_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0s(Test_aBFu8i_BFu17i_BFu0s, "aBFu8i_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0c");
    static aBFu8i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0c(Test_aBFu8i_BFu17ll_BFu0c, "aBFu8i_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0i");
    static aBFu8i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0i(Test_aBFu8i_BFu17ll_BFu0i, "aBFu8i_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0ll");
    static aBFu8i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0ll(Test_aBFu8i_BFu17ll_BFu0ll, "aBFu8i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0s");
    static aBFu8i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0s(Test_aBFu8i_BFu17ll_BFu0s, "aBFu8i_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0c");
    static aBFu8i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0c(Test_aBFu8i_BFu1c_BFu0c, "aBFu8i_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0i");
    static aBFu8i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0i(Test_aBFu8i_BFu1c_BFu0i, "aBFu8i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0ll");
    static aBFu8i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0ll(Test_aBFu8i_BFu1c_BFu0ll, "aBFu8i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0s");
    static aBFu8i_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0s(Test_aBFu8i_BFu1c_BFu0s, "aBFu8i_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0c");
    static aBFu8i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0c(Test_aBFu8i_BFu1i_BFu0c, "aBFu8i_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0i");
    static aBFu8i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0i(Test_aBFu8i_BFu1i_BFu0i, "aBFu8i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0ll");
    static aBFu8i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0ll(Test_aBFu8i_BFu1i_BFu0ll, "aBFu8i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0s");
    static aBFu8i_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0s(Test_aBFu8i_BFu1i_BFu0s, "aBFu8i_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0c");
    static aBFu8i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0c(Test_aBFu8i_BFu1ll_BFu0c, "aBFu8i_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0i");
    static aBFu8i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0i(Test_aBFu8i_BFu1ll_BFu0i, "aBFu8i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0ll");
    static aBFu8i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0ll(Test_aBFu8i_BFu1ll_BFu0ll, "aBFu8i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0s");
    static aBFu8i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0s(Test_aBFu8i_BFu1ll_BFu0s, "aBFu8i_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0c");
    static aBFu8i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0c(Test_aBFu8i_BFu1s_BFu0c, "aBFu8i_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0i");
    static aBFu8i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0i(Test_aBFu8i_BFu1s_BFu0i, "aBFu8i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0ll");
    static aBFu8i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0ll(Test_aBFu8i_BFu1s_BFu0ll, "aBFu8i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0s");
    static aBFu8i_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0s(Test_aBFu8i_BFu1s_BFu0s, "aBFu8i_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0c");
    static aBFu8i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0c(Test_aBFu8i_BFu31i_BFu0c, "aBFu8i_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0i");
    static aBFu8i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0i(Test_aBFu8i_BFu31i_BFu0i, "aBFu8i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0ll");
    static aBFu8i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0ll(Test_aBFu8i_BFu31i_BFu0ll, "aBFu8i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0s");
    static aBFu8i_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0s(Test_aBFu8i_BFu31i_BFu0s, "aBFu8i_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0c");
    static aBFu8i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0c(Test_aBFu8i_BFu31ll_BFu0c, "aBFu8i_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0i");
    static aBFu8i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0i(Test_aBFu8i_BFu31ll_BFu0i, "aBFu8i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0ll");
    static aBFu8i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0ll(Test_aBFu8i_BFu31ll_BFu0ll, "aBFu8i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0s");
    static aBFu8i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0s(Test_aBFu8i_BFu31ll_BFu0s, "aBFu8i_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0c");
    static aBFu8i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0c(Test_aBFu8i_BFu32i_BFu0c, "aBFu8i_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0i");
    static aBFu8i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0i(Test_aBFu8i_BFu32i_BFu0i, "aBFu8i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0ll");
    static aBFu8i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0ll(Test_aBFu8i_BFu32i_BFu0ll, "aBFu8i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0s");
    static aBFu8i_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0s(Test_aBFu8i_BFu32i_BFu0s, "aBFu8i_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0c");
    static aBFu8i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0c(Test_aBFu8i_BFu32ll_BFu0c, "aBFu8i_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0i");
    static aBFu8i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0i(Test_aBFu8i_BFu32ll_BFu0i, "aBFu8i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0ll");
    static aBFu8i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0ll(Test_aBFu8i_BFu32ll_BFu0ll, "aBFu8i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0s");
    static aBFu8i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0s(Test_aBFu8i_BFu32ll_BFu0s, "aBFu8i_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0c");
    static aBFu8i_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0c(Test_aBFu8i_BFu33_BFu0c, "aBFu8i_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0i");
    static aBFu8i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0i(Test_aBFu8i_BFu33_BFu0i, "aBFu8i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0ll");
    static aBFu8i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0ll(Test_aBFu8i_BFu33_BFu0ll, "aBFu8i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0s");
    static aBFu8i_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0s(Test_aBFu8i_BFu33_BFu0s, "aBFu8i_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0c");
    static aBFu8i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0c(Test_aBFu8i_BFu7c_BFu0c, "aBFu8i_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0i");
    static aBFu8i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0i(Test_aBFu8i_BFu7c_BFu0i, "aBFu8i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0ll");
    static aBFu8i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0ll(Test_aBFu8i_BFu7c_BFu0ll, "aBFu8i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0s");
    static aBFu8i_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0s(Test_aBFu8i_BFu7c_BFu0s, "aBFu8i_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0c");
    static aBFu8i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0c(Test_aBFu8i_BFu7i_BFu0c, "aBFu8i_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0i");
    static aBFu8i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0i(Test_aBFu8i_BFu7i_BFu0i, "aBFu8i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0ll");
    static aBFu8i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0ll(Test_aBFu8i_BFu7i_BFu0ll, "aBFu8i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0s");
    static aBFu8i_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0s(Test_aBFu8i_BFu7i_BFu0s, "aBFu8i_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0c");
    static aBFu8i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0c(Test_aBFu8i_BFu7ll_BFu0c, "aBFu8i_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0i");
    static aBFu8i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0i(Test_aBFu8i_BFu7ll_BFu0i, "aBFu8i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0ll");
    static aBFu8i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0ll(Test_aBFu8i_BFu7ll_BFu0ll, "aBFu8i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0s");
    static aBFu8i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0s(Test_aBFu8i_BFu7ll_BFu0s, "aBFu8i_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0c");
    static aBFu8i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0c(Test_aBFu8i_BFu7s_BFu0c, "aBFu8i_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0i");
    static aBFu8i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0i(Test_aBFu8i_BFu7s_BFu0i, "aBFu8i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0ll");
    static aBFu8i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0ll(Test_aBFu8i_BFu7s_BFu0ll, "aBFu8i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0s");
    static aBFu8i_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0s(Test_aBFu8i_BFu7s_BFu0s, "aBFu8i_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0c");
    static aBFu8i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0c(Test_aBFu8i_BFu8c_BFu0c, "aBFu8i_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0i");
    static aBFu8i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0i(Test_aBFu8i_BFu8c_BFu0i, "aBFu8i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0ll");
    static aBFu8i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0ll(Test_aBFu8i_BFu8c_BFu0ll, "aBFu8i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0s");
    static aBFu8i_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0s(Test_aBFu8i_BFu8c_BFu0s, "aBFu8i_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0c");
    static aBFu8i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0c(Test_aBFu8i_BFu8i_BFu0c, "aBFu8i_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0i");
    static aBFu8i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0i(Test_aBFu8i_BFu8i_BFu0i, "aBFu8i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0ll");
    static aBFu8i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0ll(Test_aBFu8i_BFu8i_BFu0ll, "aBFu8i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0s");
    static aBFu8i_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0s(Test_aBFu8i_BFu8i_BFu0s, "aBFu8i_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0c");
    static aBFu8i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0c(Test_aBFu8i_BFu8ll_BFu0c, "aBFu8i_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0i");
    static aBFu8i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0i(Test_aBFu8i_BFu8ll_BFu0i, "aBFu8i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0ll");
    static aBFu8i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0ll(Test_aBFu8i_BFu8ll_BFu0ll, "aBFu8i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0s");
    static aBFu8i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0s(Test_aBFu8i_BFu8ll_BFu0s, "aBFu8i_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0c");
    static aBFu8i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0c(Test_aBFu8i_BFu8s_BFu0c, "aBFu8i_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0i");
    static aBFu8i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0i(Test_aBFu8i_BFu8s_BFu0i, "aBFu8i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0ll");
    static aBFu8i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0ll(Test_aBFu8i_BFu8s_BFu0ll, "aBFu8i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0s");
    static aBFu8i_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0s(Test_aBFu8i_BFu8s_BFu0s, "aBFu8i_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0c");
    static aBFu8i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0c(Test_aBFu8i_BFu9i_BFu0c, "aBFu8i_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0i");
    static aBFu8i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0i(Test_aBFu8i_BFu9i_BFu0i, "aBFu8i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0ll");
    static aBFu8i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0ll(Test_aBFu8i_BFu9i_BFu0ll, "aBFu8i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0s");
    static aBFu8i_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0s(Test_aBFu8i_BFu9i_BFu0s, "aBFu8i_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0c");
    static aBFu8i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0c(Test_aBFu8i_BFu9ll_BFu0c, "aBFu8i_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0i");
    static aBFu8i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0i(Test_aBFu8i_BFu9ll_BFu0i, "aBFu8i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0ll");
    static aBFu8i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0ll(Test_aBFu8i_BFu9ll_BFu0ll, "aBFu8i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0s");
    static aBFu8i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0s(Test_aBFu8i_BFu9ll_BFu0s, "aBFu8i_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0c");
    static aBFu8i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0c(Test_aBFu8i_BFu9s_BFu0c, "aBFu8i_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0i");
    static aBFu8i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0i(Test_aBFu8i_BFu9s_BFu0i, "aBFu8i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0ll");
    static aBFu8i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0ll(Test_aBFu8i_BFu9s_BFu0ll, "aBFu8i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0s");
    static aBFu8i_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0s(Test_aBFu8i_BFu9s_BFu0s, "aBFu8i_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0c()
{
  {
    init_simple_test("aBFu8i_C_BFu0c");
    static aBFu8i_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0c(Test_aBFu8i_C_BFu0c, "aBFu8i_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0i()
{
  {
    init_simple_test("aBFu8i_C_BFu0i");
    static aBFu8i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0i(Test_aBFu8i_C_BFu0i, "aBFu8i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0ll()
{
  {
    init_simple_test("aBFu8i_C_BFu0ll");
    static aBFu8i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0ll(Test_aBFu8i_C_BFu0ll, "aBFu8i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0s()
{
  {
    init_simple_test("aBFu8i_C_BFu0s");
    static aBFu8i_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0s(Test_aBFu8i_C_BFu0s, "aBFu8i_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0c()
{
  {
    init_simple_test("aBFu8i_D_BFu0c");
    static aBFu8i_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0c(Test_aBFu8i_D_BFu0c, "aBFu8i_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0i()
{
  {
    init_simple_test("aBFu8i_D_BFu0i");
    static aBFu8i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0i(Test_aBFu8i_D_BFu0i, "aBFu8i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0ll()
{
  {
    init_simple_test("aBFu8i_D_BFu0ll");
    static aBFu8i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0ll(Test_aBFu8i_D_BFu0ll, "aBFu8i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0s()
{
  {
    init_simple_test("aBFu8i_D_BFu0s");
    static aBFu8i_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0s(Test_aBFu8i_D_BFu0s, "aBFu8i_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0c()
{
  {
    init_simple_test("aBFu8i_F_BFu0c");
    static aBFu8i_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0c(Test_aBFu8i_F_BFu0c, "aBFu8i_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0i()
{
  {
    init_simple_test("aBFu8i_F_BFu0i");
    static aBFu8i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0i(Test_aBFu8i_F_BFu0i, "aBFu8i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0ll()
{
  {
    init_simple_test("aBFu8i_F_BFu0ll");
    static aBFu8i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0ll(Test_aBFu8i_F_BFu0ll, "aBFu8i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0s()
{
  {
    init_simple_test("aBFu8i_F_BFu0s");
    static aBFu8i_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0s(Test_aBFu8i_F_BFu0s, "aBFu8i_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0c()
{
  {
    init_simple_test("aBFu8i_I_BFu0c");
    static aBFu8i_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0c(Test_aBFu8i_I_BFu0c, "aBFu8i_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0i()
{
  {
    init_simple_test("aBFu8i_I_BFu0i");
    static aBFu8i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0i(Test_aBFu8i_I_BFu0i, "aBFu8i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0ll()
{
  {
    init_simple_test("aBFu8i_I_BFu0ll");
    static aBFu8i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0ll(Test_aBFu8i_I_BFu0ll, "aBFu8i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0s()
{
  {
    init_simple_test("aBFu8i_I_BFu0s");
    static aBFu8i_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0s(Test_aBFu8i_I_BFu0s, "aBFu8i_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0c");
    static aBFu8i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0c(Test_aBFu8i_Ip_BFu0c, "aBFu8i_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0i");
    static aBFu8i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0i(Test_aBFu8i_Ip_BFu0i, "aBFu8i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0ll");
    static aBFu8i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0ll(Test_aBFu8i_Ip_BFu0ll, "aBFu8i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0s");
    static aBFu8i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0s(Test_aBFu8i_Ip_BFu0s, "aBFu8i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0c()
{
  {
    init_simple_test("aBFu8i_L_BFu0c");
    static aBFu8i_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0c(Test_aBFu8i_L_BFu0c, "aBFu8i_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0i()
{
  {
    init_simple_test("aBFu8i_L_BFu0i");
    static aBFu8i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0i(Test_aBFu8i_L_BFu0i, "aBFu8i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0ll()
{
  {
    init_simple_test("aBFu8i_L_BFu0ll");
    static aBFu8i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0ll(Test_aBFu8i_L_BFu0ll, "aBFu8i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0s()
{
  {
    init_simple_test("aBFu8i_L_BFu0s");
    static aBFu8i_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0s(Test_aBFu8i_L_BFu0s, "aBFu8i_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0c()
{
  {
    init_simple_test("aBFu8i_S_BFu0c");
    static aBFu8i_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0c(Test_aBFu8i_S_BFu0c, "aBFu8i_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0i()
{
  {
    init_simple_test("aBFu8i_S_BFu0i");
    static aBFu8i_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0i(Test_aBFu8i_S_BFu0i, "aBFu8i_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0ll()
{
  {
    init_simple_test("aBFu8i_S_BFu0ll");
    static aBFu8i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0ll(Test_aBFu8i_S_BFu0ll, "aBFu8i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0s()
{
  {
    init_simple_test("aBFu8i_S_BFu0s");
    static aBFu8i_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0s(Test_aBFu8i_S_BFu0s, "aBFu8i_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0c");
    static aBFu8i_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0c(Test_aBFu8i_Uc_BFu0c, "aBFu8i_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0i");
    static aBFu8i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0i(Test_aBFu8i_Uc_BFu0i, "aBFu8i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0ll");
    static aBFu8i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0ll(Test_aBFu8i_Uc_BFu0ll, "aBFu8i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0s");
    static aBFu8i_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0s(Test_aBFu8i_Uc_BFu0s, "aBFu8i_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0c");
    static aBFu8i_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0c(Test_aBFu8i_Ui_BFu0c, "aBFu8i_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0i");
    static aBFu8i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0i(Test_aBFu8i_Ui_BFu0i, "aBFu8i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0ll");
    static aBFu8i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0ll(Test_aBFu8i_Ui_BFu0ll, "aBFu8i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0s");
    static aBFu8i_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0s(Test_aBFu8i_Ui_BFu0s, "aBFu8i_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0c");
    static aBFu8i_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0c(Test_aBFu8i_Ul_BFu0c, "aBFu8i_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0i");
    static aBFu8i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0i(Test_aBFu8i_Ul_BFu0i, "aBFu8i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0ll");
    static aBFu8i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0ll(Test_aBFu8i_Ul_BFu0ll, "aBFu8i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0s");
    static aBFu8i_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0s(Test_aBFu8i_Ul_BFu0s, "aBFu8i_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0c()
{
  {
    init_simple_test("aBFu8i_Us_BFu0c");
    static aBFu8i_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0c(Test_aBFu8i_Us_BFu0c, "aBFu8i_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0i()
{
  {
    init_simple_test("aBFu8i_Us_BFu0i");
    static aBFu8i_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0i(Test_aBFu8i_Us_BFu0i, "aBFu8i_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Us_BFu0ll");
    static aBFu8i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0ll(Test_aBFu8i_Us_BFu0ll, "aBFu8i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0s()
{
  {
    init_simple_test("aBFu8i_Us_BFu0s");
    static aBFu8i_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0s(Test_aBFu8i_Us_BFu0s, "aBFu8i_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0c");
    static aBFu8i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0c(Test_aBFu8i_Vp_BFu0c, "aBFu8i_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0i");
    static aBFu8i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0i(Test_aBFu8i_Vp_BFu0i, "aBFu8i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0ll");
    static aBFu8i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0ll(Test_aBFu8i_Vp_BFu0ll, "aBFu8i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0s");
    static aBFu8i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0s(Test_aBFu8i_Vp_BFu0s, "aBFu8i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0c");
    static aBFu8ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c(Test_aBFu8ll_BFu0c, "aBFu8ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0c");
    static aBFu8ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0c(Test_aBFu8ll_BFu0c_BFu0c, "aBFu8ll_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0i");
    static aBFu8ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0i(Test_aBFu8ll_BFu0c_BFu0i, "aBFu8ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0ll");
    static aBFu8ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0ll(Test_aBFu8ll_BFu0c_BFu0ll, "aBFu8ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0s");
    static aBFu8ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0s(Test_aBFu8ll_BFu0c_BFu0s, "aBFu8ll_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15i");
    static aBFu8ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15i(Test_aBFu8ll_BFu0c_BFu15i, "aBFu8ll_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15ll");
    static aBFu8ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15ll(Test_aBFu8ll_BFu0c_BFu15ll, "aBFu8ll_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15s");
    static aBFu8ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15s(Test_aBFu8ll_BFu0c_BFu15s, "aBFu8ll_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16i");
    static aBFu8ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16i(Test_aBFu8ll_BFu0c_BFu16i, "aBFu8ll_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16ll");
    static aBFu8ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16ll(Test_aBFu8ll_BFu0c_BFu16ll, "aBFu8ll_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16s");
    static aBFu8ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16s(Test_aBFu8ll_BFu0c_BFu16s, "aBFu8ll_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu17i");
    static aBFu8ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu17i(Test_aBFu8ll_BFu0c_BFu17i, "aBFu8ll_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu17ll");
    static aBFu8ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu17ll(Test_aBFu8ll_BFu0c_BFu17ll, "aBFu8ll_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1c");
    static aBFu8ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1c(Test_aBFu8ll_BFu0c_BFu1c, "aBFu8ll_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1i");
    static aBFu8ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1i(Test_aBFu8ll_BFu0c_BFu1i, "aBFu8ll_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1ll");
    static aBFu8ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1ll(Test_aBFu8ll_BFu0c_BFu1ll, "aBFu8ll_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1s");
    static aBFu8ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1s(Test_aBFu8ll_BFu0c_BFu1s, "aBFu8ll_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu31i");
    static aBFu8ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu31i(Test_aBFu8ll_BFu0c_BFu31i, "aBFu8ll_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu31ll");
    static aBFu8ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu31ll(Test_aBFu8ll_BFu0c_BFu31ll, "aBFu8ll_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu32i");
    static aBFu8ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu32i(Test_aBFu8ll_BFu0c_BFu32i, "aBFu8ll_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu32ll");
    static aBFu8ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu32ll(Test_aBFu8ll_BFu0c_BFu32ll, "aBFu8ll_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu33");
    static aBFu8ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu33(Test_aBFu8ll_BFu0c_BFu33, "aBFu8ll_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7c");
    static aBFu8ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7c(Test_aBFu8ll_BFu0c_BFu7c, "aBFu8ll_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7i");
    static aBFu8ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7i(Test_aBFu8ll_BFu0c_BFu7i, "aBFu8ll_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7ll");
    static aBFu8ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7ll(Test_aBFu8ll_BFu0c_BFu7ll, "aBFu8ll_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7s");
    static aBFu8ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7s(Test_aBFu8ll_BFu0c_BFu7s, "aBFu8ll_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8c");
    static aBFu8ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8c(Test_aBFu8ll_BFu0c_BFu8c, "aBFu8ll_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8i");
    static aBFu8ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8i(Test_aBFu8ll_BFu0c_BFu8i, "aBFu8ll_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8ll");
    static aBFu8ll_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8ll(Test_aBFu8ll_BFu0c_BFu8ll, "aBFu8ll_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8s");
    static aBFu8ll_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8s(Test_aBFu8ll_BFu0c_BFu8s, "aBFu8ll_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9i");
    static aBFu8ll_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9i(Test_aBFu8ll_BFu0c_BFu9i, "aBFu8ll_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9ll");
    static aBFu8ll_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9ll(Test_aBFu8ll_BFu0c_BFu9ll, "aBFu8ll_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9s");
    static aBFu8ll_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9s(Test_aBFu8ll_BFu0c_BFu9s, "aBFu8ll_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_C()
{
  {
    init_simple_test("aBFu8ll_BFu0c_C");
    static aBFu8ll_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_C(Test_aBFu8ll_BFu0c_C, "aBFu8ll_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_D()
{
  {
    init_simple_test("aBFu8ll_BFu0c_D");
    static aBFu8ll_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_D(Test_aBFu8ll_BFu0c_D, "aBFu8ll_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_F()
{
  {
    init_simple_test("aBFu8ll_BFu0c_F");
    static aBFu8ll_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_F(Test_aBFu8ll_BFu0c_F, "aBFu8ll_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_I()
{
  {
    init_simple_test("aBFu8ll_BFu0c_I");
    static aBFu8ll_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_I(Test_aBFu8ll_BFu0c_I, "aBFu8ll_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ip");
    static aBFu8ll_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ip(Test_aBFu8ll_BFu0c_Ip, "aBFu8ll_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_L()
{
  {
    init_simple_test("aBFu8ll_BFu0c_L");
    static aBFu8ll_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_L(Test_aBFu8ll_BFu0c_L, "aBFu8ll_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_S()
{
  {
    init_simple_test("aBFu8ll_BFu0c_S");
    static aBFu8ll_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_S(Test_aBFu8ll_BFu0c_S, "aBFu8ll_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Uc");
    static aBFu8ll_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Uc(Test_aBFu8ll_BFu0c_Uc, "aBFu8ll_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ui");
    static aBFu8ll_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ui(Test_aBFu8ll_BFu0c_Ui, "aBFu8ll_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ul");
    static aBFu8ll_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ul(Test_aBFu8ll_BFu0c_Ul, "aBFu8ll_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Us");
    static aBFu8ll_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Us(Test_aBFu8ll_BFu0c_Us, "aBFu8ll_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Vp");
    static aBFu8ll_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Vp(Test_aBFu8ll_BFu0c_Vp, "aBFu8ll_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0i");
    static aBFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i(Test_aBFu8ll_BFu0i, "aBFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0c");
    static aBFu8ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0c(Test_aBFu8ll_BFu0i_BFu0c, "aBFu8ll_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0i");
    static aBFu8ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0i(Test_aBFu8ll_BFu0i_BFu0i, "aBFu8ll_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0ll");
    static aBFu8ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0ll(Test_aBFu8ll_BFu0i_BFu0ll, "aBFu8ll_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0s");
    static aBFu8ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0s(Test_aBFu8ll_BFu0i_BFu0s, "aBFu8ll_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15i");
    static aBFu8ll_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15i(Test_aBFu8ll_BFu0i_BFu15i, "aBFu8ll_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15ll");
    static aBFu8ll_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15ll(Test_aBFu8ll_BFu0i_BFu15ll, "aBFu8ll_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15s");
    static aBFu8ll_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15s(Test_aBFu8ll_BFu0i_BFu15s, "aBFu8ll_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16i");
    static aBFu8ll_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16i(Test_aBFu8ll_BFu0i_BFu16i, "aBFu8ll_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16ll");
    static aBFu8ll_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16ll(Test_aBFu8ll_BFu0i_BFu16ll, "aBFu8ll_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16s");
    static aBFu8ll_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16s(Test_aBFu8ll_BFu0i_BFu16s, "aBFu8ll_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu17i");
    static aBFu8ll_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu17i(Test_aBFu8ll_BFu0i_BFu17i, "aBFu8ll_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu17ll");
    static aBFu8ll_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu17ll(Test_aBFu8ll_BFu0i_BFu17ll, "aBFu8ll_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1c");
    static aBFu8ll_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1c(Test_aBFu8ll_BFu0i_BFu1c, "aBFu8ll_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1i");
    static aBFu8ll_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1i(Test_aBFu8ll_BFu0i_BFu1i, "aBFu8ll_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1ll");
    static aBFu8ll_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1ll(Test_aBFu8ll_BFu0i_BFu1ll, "aBFu8ll_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1s");
    static aBFu8ll_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1s(Test_aBFu8ll_BFu0i_BFu1s, "aBFu8ll_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu31i");
    static aBFu8ll_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu31i(Test_aBFu8ll_BFu0i_BFu31i, "aBFu8ll_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu31ll");
    static aBFu8ll_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu31ll(Test_aBFu8ll_BFu0i_BFu31ll, "aBFu8ll_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu32i");
    static aBFu8ll_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu32i(Test_aBFu8ll_BFu0i_BFu32i, "aBFu8ll_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu32ll");
    static aBFu8ll_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu32ll(Test_aBFu8ll_BFu0i_BFu32ll, "aBFu8ll_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu33");
    static aBFu8ll_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8ll_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu33(Test_aBFu8ll_BFu0i_BFu33, "aBFu8ll_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7c");
    static aBFu8ll_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7c(Test_aBFu8ll_BFu0i_BFu7c, "aBFu8ll_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7i");
    static aBFu8ll_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7i(Test_aBFu8ll_BFu0i_BFu7i, "aBFu8ll_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7ll");
    static aBFu8ll_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7ll(Test_aBFu8ll_BFu0i_BFu7ll, "aBFu8ll_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7s");
    static aBFu8ll_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7s(Test_aBFu8ll_BFu0i_BFu7s, "aBFu8ll_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8c");
    static aBFu8ll_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8c(Test_aBFu8ll_BFu0i_BFu8c, "aBFu8ll_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8i");
    static aBFu8ll_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8i(Test_aBFu8ll_BFu0i_BFu8i, "aBFu8ll_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8ll");
    static aBFu8ll_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8ll(Test_aBFu8ll_BFu0i_BFu8ll, "aBFu8ll_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8s");
    static aBFu8ll_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8s(Test_aBFu8ll_BFu0i_BFu8s, "aBFu8ll_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9i");
    static aBFu8ll_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9i(Test_aBFu8ll_BFu0i_BFu9i, "aBFu8ll_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9ll");
    static aBFu8ll_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9ll(Test_aBFu8ll_BFu0i_BFu9ll, "aBFu8ll_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9s");
    static aBFu8ll_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9s(Test_aBFu8ll_BFu0i_BFu9s, "aBFu8ll_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_C()
{
  {
    init_simple_test("aBFu8ll_BFu0i_C");
    static aBFu8ll_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_C(Test_aBFu8ll_BFu0i_C, "aBFu8ll_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_D()
{
  {
    init_simple_test("aBFu8ll_BFu0i_D");
    static aBFu8ll_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_D(Test_aBFu8ll_BFu0i_D, "aBFu8ll_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_F()
{
  {
    init_simple_test("aBFu8ll_BFu0i_F");
    static aBFu8ll_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_F(Test_aBFu8ll_BFu0i_F, "aBFu8ll_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_I()
{
  {
    init_simple_test("aBFu8ll_BFu0i_I");
    static aBFu8ll_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_I(Test_aBFu8ll_BFu0i_I, "aBFu8ll_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ip");
    static aBFu8ll_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ip(Test_aBFu8ll_BFu0i_Ip, "aBFu8ll_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_L()
{
  {
    init_simple_test("aBFu8ll_BFu0i_L");
    static aBFu8ll_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_L(Test_aBFu8ll_BFu0i_L, "aBFu8ll_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_S()
{
  {
    init_simple_test("aBFu8ll_BFu0i_S");
    static aBFu8ll_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_S(Test_aBFu8ll_BFu0i_S, "aBFu8ll_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Uc");
    static aBFu8ll_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Uc(Test_aBFu8ll_BFu0i_Uc, "aBFu8ll_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ui");
    static aBFu8ll_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ui(Test_aBFu8ll_BFu0i_Ui, "aBFu8ll_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ul");
    static aBFu8ll_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ul(Test_aBFu8ll_BFu0i_Ul, "aBFu8ll_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Us");
    static aBFu8ll_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Us(Test_aBFu8ll_BFu0i_Us, "aBFu8ll_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Vp");
    static aBFu8ll_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Vp(Test_aBFu8ll_BFu0i_Vp, "aBFu8ll_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll");
    static aBFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll(Test_aBFu8ll_BFu0ll, "aBFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0c");
    static aBFu8ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0c(Test_aBFu8ll_BFu0ll_BFu0c, "aBFu8ll_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0i");
    static aBFu8ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0i(Test_aBFu8ll_BFu0ll_BFu0i, "aBFu8ll_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0ll");
    static aBFu8ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0ll(Test_aBFu8ll_BFu0ll_BFu0ll, "aBFu8ll_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0s");
    static aBFu8ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0s(Test_aBFu8ll_BFu0ll_BFu0s, "aBFu8ll_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15i");
    static aBFu8ll_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15i(Test_aBFu8ll_BFu0ll_BFu15i, "aBFu8ll_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15ll");
    static aBFu8ll_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15ll(Test_aBFu8ll_BFu0ll_BFu15ll, "aBFu8ll_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15s");
    static aBFu8ll_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15s(Test_aBFu8ll_BFu0ll_BFu15s, "aBFu8ll_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16i");
    static aBFu8ll_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16i(Test_aBFu8ll_BFu0ll_BFu16i, "aBFu8ll_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16ll");
    static aBFu8ll_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16ll(Test_aBFu8ll_BFu0ll_BFu16ll, "aBFu8ll_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16s");
    static aBFu8ll_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16s(Test_aBFu8ll_BFu0ll_BFu16s, "aBFu8ll_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu17i");
    static aBFu8ll_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8ll_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu17i(Test_aBFu8ll_BFu0ll_BFu17i, "aBFu8ll_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu17ll");
    static aBFu8ll_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8ll_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu17ll(Test_aBFu8ll_BFu0ll_BFu17ll, "aBFu8ll_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1c");
    static aBFu8ll_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1c(Test_aBFu8ll_BFu0ll_BFu1c, "aBFu8ll_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1i");
    static aBFu8ll_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1i(Test_aBFu8ll_BFu0ll_BFu1i, "aBFu8ll_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1ll");
    static aBFu8ll_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1ll(Test_aBFu8ll_BFu0ll_BFu1ll, "aBFu8ll_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1s");
    static aBFu8ll_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1s(Test_aBFu8ll_BFu0ll_BFu1s, "aBFu8ll_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu31i");
    static aBFu8ll_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu31i(Test_aBFu8ll_BFu0ll_BFu31i, "aBFu8ll_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu31ll");
    static aBFu8ll_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu31ll(Test_aBFu8ll_BFu0ll_BFu31ll, "aBFu8ll_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu32i");
    static aBFu8ll_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu32i(Test_aBFu8ll_BFu0ll_BFu32i, "aBFu8ll_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu32ll");
    static aBFu8ll_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu32ll(Test_aBFu8ll_BFu0ll_BFu32ll, "aBFu8ll_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu33");
    static aBFu8ll_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8ll_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu33(Test_aBFu8ll_BFu0ll_BFu33, "aBFu8ll_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7c");
    static aBFu8ll_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7c(Test_aBFu8ll_BFu0ll_BFu7c, "aBFu8ll_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7i");
    static aBFu8ll_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7i(Test_aBFu8ll_BFu0ll_BFu7i, "aBFu8ll_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7ll");
    static aBFu8ll_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7ll(Test_aBFu8ll_BFu0ll_BFu7ll, "aBFu8ll_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7s");
    static aBFu8ll_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7s(Test_aBFu8ll_BFu0ll_BFu7s, "aBFu8ll_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8c");
    static aBFu8ll_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8c(Test_aBFu8ll_BFu0ll_BFu8c, "aBFu8ll_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8i");
    static aBFu8ll_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8i(Test_aBFu8ll_BFu0ll_BFu8i, "aBFu8ll_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8ll");
    static aBFu8ll_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8ll(Test_aBFu8ll_BFu0ll_BFu8ll, "aBFu8ll_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8s");
    static aBFu8ll_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8s(Test_aBFu8ll_BFu0ll_BFu8s, "aBFu8ll_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9i");
    static aBFu8ll_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9i(Test_aBFu8ll_BFu0ll_BFu9i, "aBFu8ll_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9ll");
    static aBFu8ll_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9ll(Test_aBFu8ll_BFu0ll_BFu9ll, "aBFu8ll_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9s");
    static aBFu8ll_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9s(Test_aBFu8ll_BFu0ll_BFu9s, "aBFu8ll_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_C()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_C");
    static aBFu8ll_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_C(Test_aBFu8ll_BFu0ll_C, "aBFu8ll_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_D()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_D");
    static aBFu8ll_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_D(Test_aBFu8ll_BFu0ll_D, "aBFu8ll_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_F()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_F");
    static aBFu8ll_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_F(Test_aBFu8ll_BFu0ll_F, "aBFu8ll_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_I()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_I");
    static aBFu8ll_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_I(Test_aBFu8ll_BFu0ll_I, "aBFu8ll_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ip");
    static aBFu8ll_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ip(Test_aBFu8ll_BFu0ll_Ip, "aBFu8ll_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_L()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_L");
    static aBFu8ll_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_L(Test_aBFu8ll_BFu0ll_L, "aBFu8ll_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_S()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_S");
    static aBFu8ll_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_S(Test_aBFu8ll_BFu0ll_S, "aBFu8ll_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Uc");
    static aBFu8ll_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Uc(Test_aBFu8ll_BFu0ll_Uc, "aBFu8ll_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ui");
    static aBFu8ll_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ui(Test_aBFu8ll_BFu0ll_Ui, "aBFu8ll_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ul");
    static aBFu8ll_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ul(Test_aBFu8ll_BFu0ll_Ul, "aBFu8ll_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Us");
    static aBFu8ll_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Us(Test_aBFu8ll_BFu0ll_Us, "aBFu8ll_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Vp");
    static aBFu8ll_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Vp(Test_aBFu8ll_BFu0ll_Vp, "aBFu8ll_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0s");
    static aBFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s(Test_aBFu8ll_BFu0s, "aBFu8ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0c");
    static aBFu8ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0c(Test_aBFu8ll_BFu0s_BFu0c, "aBFu8ll_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0i");
    static aBFu8ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0i(Test_aBFu8ll_BFu0s_BFu0i, "aBFu8ll_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0ll");
    static aBFu8ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0ll(Test_aBFu8ll_BFu0s_BFu0ll, "aBFu8ll_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0s");
    static aBFu8ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0s(Test_aBFu8ll_BFu0s_BFu0s, "aBFu8ll_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15i");
    static aBFu8ll_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15i(Test_aBFu8ll_BFu0s_BFu15i, "aBFu8ll_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15ll");
    static aBFu8ll_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15ll(Test_aBFu8ll_BFu0s_BFu15ll, "aBFu8ll_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15s");
    static aBFu8ll_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15s(Test_aBFu8ll_BFu0s_BFu15s, "aBFu8ll_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16i");
    static aBFu8ll_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16i(Test_aBFu8ll_BFu0s_BFu16i, "aBFu8ll_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16ll");
    static aBFu8ll_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16ll(Test_aBFu8ll_BFu0s_BFu16ll, "aBFu8ll_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16s");
    static aBFu8ll_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16s(Test_aBFu8ll_BFu0s_BFu16s, "aBFu8ll_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu17i");
    static aBFu8ll_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu17i(Test_aBFu8ll_BFu0s_BFu17i, "aBFu8ll_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu17ll");
    static aBFu8ll_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu17ll(Test_aBFu8ll_BFu0s_BFu17ll, "aBFu8ll_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1c");
    static aBFu8ll_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1c(Test_aBFu8ll_BFu0s_BFu1c, "aBFu8ll_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1i");
    static aBFu8ll_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1i(Test_aBFu8ll_BFu0s_BFu1i, "aBFu8ll_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1ll");
    static aBFu8ll_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1ll(Test_aBFu8ll_BFu0s_BFu1ll, "aBFu8ll_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1s");
    static aBFu8ll_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1s(Test_aBFu8ll_BFu0s_BFu1s, "aBFu8ll_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu31i");
    static aBFu8ll_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu31i(Test_aBFu8ll_BFu0s_BFu31i, "aBFu8ll_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu31ll");
    static aBFu8ll_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu31ll(Test_aBFu8ll_BFu0s_BFu31ll, "aBFu8ll_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu32i");
    static aBFu8ll_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu32i(Test_aBFu8ll_BFu0s_BFu32i, "aBFu8ll_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu32ll");
    static aBFu8ll_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu32ll(Test_aBFu8ll_BFu0s_BFu32ll, "aBFu8ll_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu33");
    static aBFu8ll_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu33(Test_aBFu8ll_BFu0s_BFu33, "aBFu8ll_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7c");
    static aBFu8ll_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7c(Test_aBFu8ll_BFu0s_BFu7c, "aBFu8ll_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7i");
    static aBFu8ll_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7i(Test_aBFu8ll_BFu0s_BFu7i, "aBFu8ll_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7ll");
    static aBFu8ll_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7ll(Test_aBFu8ll_BFu0s_BFu7ll, "aBFu8ll_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7s");
    static aBFu8ll_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7s(Test_aBFu8ll_BFu0s_BFu7s, "aBFu8ll_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8c");
    static aBFu8ll_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8c(Test_aBFu8ll_BFu0s_BFu8c, "aBFu8ll_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8i");
    static aBFu8ll_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8i(Test_aBFu8ll_BFu0s_BFu8i, "aBFu8ll_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8ll");
    static aBFu8ll_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8ll(Test_aBFu8ll_BFu0s_BFu8ll, "aBFu8ll_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8s");
    static aBFu8ll_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8s(Test_aBFu8ll_BFu0s_BFu8s, "aBFu8ll_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9i");
    static aBFu8ll_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9i(Test_aBFu8ll_BFu0s_BFu9i, "aBFu8ll_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9ll");
    static aBFu8ll_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9ll(Test_aBFu8ll_BFu0s_BFu9ll, "aBFu8ll_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9s");
    static aBFu8ll_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9s(Test_aBFu8ll_BFu0s_BFu9s, "aBFu8ll_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_C()
{
  {
    init_simple_test("aBFu8ll_BFu0s_C");
    static aBFu8ll_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_C(Test_aBFu8ll_BFu0s_C, "aBFu8ll_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_D()
{
  {
    init_simple_test("aBFu8ll_BFu0s_D");
    static aBFu8ll_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_D(Test_aBFu8ll_BFu0s_D, "aBFu8ll_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_F()
{
  {
    init_simple_test("aBFu8ll_BFu0s_F");
    static aBFu8ll_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_F(Test_aBFu8ll_BFu0s_F, "aBFu8ll_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_I()
{
  {
    init_simple_test("aBFu8ll_BFu0s_I");
    static aBFu8ll_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_I(Test_aBFu8ll_BFu0s_I, "aBFu8ll_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ip");
    static aBFu8ll_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ip(Test_aBFu8ll_BFu0s_Ip, "aBFu8ll_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_L()
{
  {
    init_simple_test("aBFu8ll_BFu0s_L");
    static aBFu8ll_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_L(Test_aBFu8ll_BFu0s_L, "aBFu8ll_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_S()
{
  {
    init_simple_test("aBFu8ll_BFu0s_S");
    static aBFu8ll_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_S(Test_aBFu8ll_BFu0s_S, "aBFu8ll_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Uc");
    static aBFu8ll_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Uc(Test_aBFu8ll_BFu0s_Uc, "aBFu8ll_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ui");
    static aBFu8ll_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ui(Test_aBFu8ll_BFu0s_Ui, "aBFu8ll_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ul");
    static aBFu8ll_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ul(Test_aBFu8ll_BFu0s_Ul, "aBFu8ll_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Us");
    static aBFu8ll_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Us(Test_aBFu8ll_BFu0s_Us, "aBFu8ll_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Vp");
    static aBFu8ll_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Vp(Test_aBFu8ll_BFu0s_Vp, "aBFu8ll_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0c");
    static aBFu8ll_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0c(Test_aBFu8ll_BFu15i_BFu0c, "aBFu8ll_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0i");
    static aBFu8ll_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0i(Test_aBFu8ll_BFu15i_BFu0i, "aBFu8ll_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0ll");
    static aBFu8ll_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0ll(Test_aBFu8ll_BFu15i_BFu0ll, "aBFu8ll_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0s");
    static aBFu8ll_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0s(Test_aBFu8ll_BFu15i_BFu0s, "aBFu8ll_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0c");
    static aBFu8ll_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0c(Test_aBFu8ll_BFu15ll_BFu0c, "aBFu8ll_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0i");
    static aBFu8ll_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0i(Test_aBFu8ll_BFu15ll_BFu0i, "aBFu8ll_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0ll");
    static aBFu8ll_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0ll(Test_aBFu8ll_BFu15ll_BFu0ll, "aBFu8ll_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0s");
    static aBFu8ll_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0s(Test_aBFu8ll_BFu15ll_BFu0s, "aBFu8ll_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0c");
    static aBFu8ll_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0c(Test_aBFu8ll_BFu15s_BFu0c, "aBFu8ll_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0i");
    static aBFu8ll_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0i(Test_aBFu8ll_BFu15s_BFu0i, "aBFu8ll_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0ll");
    static aBFu8ll_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0ll(Test_aBFu8ll_BFu15s_BFu0ll, "aBFu8ll_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0s");
    static aBFu8ll_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0s(Test_aBFu8ll_BFu15s_BFu0s, "aBFu8ll_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0c");
    static aBFu8ll_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0c(Test_aBFu8ll_BFu16i_BFu0c, "aBFu8ll_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0i");
    static aBFu8ll_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0i(Test_aBFu8ll_BFu16i_BFu0i, "aBFu8ll_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0ll");
    static aBFu8ll_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0ll(Test_aBFu8ll_BFu16i_BFu0ll, "aBFu8ll_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0s");
    static aBFu8ll_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0s(Test_aBFu8ll_BFu16i_BFu0s, "aBFu8ll_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0c");
    static aBFu8ll_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0c(Test_aBFu8ll_BFu16ll_BFu0c, "aBFu8ll_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0i");
    static aBFu8ll_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0i(Test_aBFu8ll_BFu16ll_BFu0i, "aBFu8ll_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0ll");
    static aBFu8ll_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0ll(Test_aBFu8ll_BFu16ll_BFu0ll, "aBFu8ll_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0s");
    static aBFu8ll_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0s(Test_aBFu8ll_BFu16ll_BFu0s, "aBFu8ll_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0c");
    static aBFu8ll_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0c(Test_aBFu8ll_BFu16s_BFu0c, "aBFu8ll_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0i");
    static aBFu8ll_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0i(Test_aBFu8ll_BFu16s_BFu0i, "aBFu8ll_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0ll");
    static aBFu8ll_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0ll(Test_aBFu8ll_BFu16s_BFu0ll, "aBFu8ll_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0s");
    static aBFu8ll_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0s(Test_aBFu8ll_BFu16s_BFu0s, "aBFu8ll_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0c");
    static aBFu8ll_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0c(Test_aBFu8ll_BFu17i_BFu0c, "aBFu8ll_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0i");
    static aBFu8ll_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0i(Test_aBFu8ll_BFu17i_BFu0i, "aBFu8ll_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0ll");
    static aBFu8ll_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0ll(Test_aBFu8ll_BFu17i_BFu0ll, "aBFu8ll_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0s");
    static aBFu8ll_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0s(Test_aBFu8ll_BFu17i_BFu0s, "aBFu8ll_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0c");
    static aBFu8ll_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0c(Test_aBFu8ll_BFu17ll_BFu0c, "aBFu8ll_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0i");
    static aBFu8ll_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0i(Test_aBFu8ll_BFu17ll_BFu0i, "aBFu8ll_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0ll");
    static aBFu8ll_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0ll(Test_aBFu8ll_BFu17ll_BFu0ll, "aBFu8ll_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0s");
    static aBFu8ll_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0s(Test_aBFu8ll_BFu17ll_BFu0s, "aBFu8ll_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0c");
    static aBFu8ll_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0c(Test_aBFu8ll_BFu1c_BFu0c, "aBFu8ll_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0i");
    static aBFu8ll_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0i(Test_aBFu8ll_BFu1c_BFu0i, "aBFu8ll_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0ll");
    static aBFu8ll_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0ll(Test_aBFu8ll_BFu1c_BFu0ll, "aBFu8ll_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0s");
    static aBFu8ll_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0s(Test_aBFu8ll_BFu1c_BFu0s, "aBFu8ll_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0c");
    static aBFu8ll_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0c(Test_aBFu8ll_BFu1i_BFu0c, "aBFu8ll_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0i");
    static aBFu8ll_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0i(Test_aBFu8ll_BFu1i_BFu0i, "aBFu8ll_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0ll");
    static aBFu8ll_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0ll(Test_aBFu8ll_BFu1i_BFu0ll, "aBFu8ll_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0s");
    static aBFu8ll_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0s(Test_aBFu8ll_BFu1i_BFu0s, "aBFu8ll_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0c");
    static aBFu8ll_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0c(Test_aBFu8ll_BFu1ll_BFu0c, "aBFu8ll_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0i");
    static aBFu8ll_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0i(Test_aBFu8ll_BFu1ll_BFu0i, "aBFu8ll_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0ll");
    static aBFu8ll_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0ll(Test_aBFu8ll_BFu1ll_BFu0ll, "aBFu8ll_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0s");
    static aBFu8ll_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0s(Test_aBFu8ll_BFu1ll_BFu0s, "aBFu8ll_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0c");
    static aBFu8ll_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0c(Test_aBFu8ll_BFu1s_BFu0c, "aBFu8ll_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0i");
    static aBFu8ll_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0i(Test_aBFu8ll_BFu1s_BFu0i, "aBFu8ll_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0ll");
    static aBFu8ll_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0ll(Test_aBFu8ll_BFu1s_BFu0ll, "aBFu8ll_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0s");
    static aBFu8ll_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0s(Test_aBFu8ll_BFu1s_BFu0s, "aBFu8ll_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0c");
    static aBFu8ll_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0c(Test_aBFu8ll_BFu31i_BFu0c, "aBFu8ll_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0i");
    static aBFu8ll_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0i(Test_aBFu8ll_BFu31i_BFu0i, "aBFu8ll_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0ll");
    static aBFu8ll_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0ll(Test_aBFu8ll_BFu31i_BFu0ll, "aBFu8ll_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0s");
    static aBFu8ll_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0s(Test_aBFu8ll_BFu31i_BFu0s, "aBFu8ll_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0c");
    static aBFu8ll_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0c(Test_aBFu8ll_BFu31ll_BFu0c, "aBFu8ll_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0i");
    static aBFu8ll_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0i(Test_aBFu8ll_BFu31ll_BFu0i, "aBFu8ll_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0ll");
    static aBFu8ll_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0ll(Test_aBFu8ll_BFu31ll_BFu0ll, "aBFu8ll_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0s");
    static aBFu8ll_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0s(Test_aBFu8ll_BFu31ll_BFu0s, "aBFu8ll_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0c");
    static aBFu8ll_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0c(Test_aBFu8ll_BFu32i_BFu0c, "aBFu8ll_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0i");
    static aBFu8ll_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0i(Test_aBFu8ll_BFu32i_BFu0i, "aBFu8ll_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0ll");
    static aBFu8ll_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0ll(Test_aBFu8ll_BFu32i_BFu0ll, "aBFu8ll_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0s");
    static aBFu8ll_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0s(Test_aBFu8ll_BFu32i_BFu0s, "aBFu8ll_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0c");
    static aBFu8ll_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0c(Test_aBFu8ll_BFu32ll_BFu0c, "aBFu8ll_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0i");
    static aBFu8ll_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0i(Test_aBFu8ll_BFu32ll_BFu0i, "aBFu8ll_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0ll");
    static aBFu8ll_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0ll(Test_aBFu8ll_BFu32ll_BFu0ll, "aBFu8ll_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0s");
    static aBFu8ll_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0s(Test_aBFu8ll_BFu32ll_BFu0s, "aBFu8ll_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0c");
    static aBFu8ll_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0c(Test_aBFu8ll_BFu33_BFu0c, "aBFu8ll_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0i");
    static aBFu8ll_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0i(Test_aBFu8ll_BFu33_BFu0i, "aBFu8ll_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0ll");
    static aBFu8ll_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0ll(Test_aBFu8ll_BFu33_BFu0ll, "aBFu8ll_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0s");
    static aBFu8ll_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0s(Test_aBFu8ll_BFu33_BFu0s, "aBFu8ll_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0c");
    static aBFu8ll_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0c(Test_aBFu8ll_BFu7c_BFu0c, "aBFu8ll_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0i");
    static aBFu8ll_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0i(Test_aBFu8ll_BFu7c_BFu0i, "aBFu8ll_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0ll");
    static aBFu8ll_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0ll(Test_aBFu8ll_BFu7c_BFu0ll, "aBFu8ll_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0s");
    static aBFu8ll_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0s(Test_aBFu8ll_BFu7c_BFu0s, "aBFu8ll_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0c");
    static aBFu8ll_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0c(Test_aBFu8ll_BFu7i_BFu0c, "aBFu8ll_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0i");
    static aBFu8ll_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0i(Test_aBFu8ll_BFu7i_BFu0i, "aBFu8ll_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0ll");
    static aBFu8ll_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0ll(Test_aBFu8ll_BFu7i_BFu0ll, "aBFu8ll_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0s");
    static aBFu8ll_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0s(Test_aBFu8ll_BFu7i_BFu0s, "aBFu8ll_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0c");
    static aBFu8ll_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0c(Test_aBFu8ll_BFu7ll_BFu0c, "aBFu8ll_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0i");
    static aBFu8ll_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0i(Test_aBFu8ll_BFu7ll_BFu0i, "aBFu8ll_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0ll");
    static aBFu8ll_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0ll(Test_aBFu8ll_BFu7ll_BFu0ll, "aBFu8ll_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0s");
    static aBFu8ll_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0s(Test_aBFu8ll_BFu7ll_BFu0s, "aBFu8ll_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0c");
    static aBFu8ll_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0c(Test_aBFu8ll_BFu7s_BFu0c, "aBFu8ll_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0i");
    static aBFu8ll_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0i(Test_aBFu8ll_BFu7s_BFu0i, "aBFu8ll_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0ll");
    static aBFu8ll_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0ll(Test_aBFu8ll_BFu7s_BFu0ll, "aBFu8ll_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0s");
    static aBFu8ll_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0s(Test_aBFu8ll_BFu7s_BFu0s, "aBFu8ll_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0c");
    static aBFu8ll_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0c(Test_aBFu8ll_BFu8c_BFu0c, "aBFu8ll_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0i");
    static aBFu8ll_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0i(Test_aBFu8ll_BFu8c_BFu0i, "aBFu8ll_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0ll");
    static aBFu8ll_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0ll(Test_aBFu8ll_BFu8c_BFu0ll, "aBFu8ll_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0s");
    static aBFu8ll_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0s(Test_aBFu8ll_BFu8c_BFu0s, "aBFu8ll_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0c");
    static aBFu8ll_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0c(Test_aBFu8ll_BFu8i_BFu0c, "aBFu8ll_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0i");
    static aBFu8ll_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0i(Test_aBFu8ll_BFu8i_BFu0i, "aBFu8ll_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0ll");
    static aBFu8ll_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0ll(Test_aBFu8ll_BFu8i_BFu0ll, "aBFu8ll_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0s");
    static aBFu8ll_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0s(Test_aBFu8ll_BFu8i_BFu0s, "aBFu8ll_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0c");
    static aBFu8ll_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0c(Test_aBFu8ll_BFu8ll_BFu0c, "aBFu8ll_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0i");
    static aBFu8ll_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0i(Test_aBFu8ll_BFu8ll_BFu0i, "aBFu8ll_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0ll");
    static aBFu8ll_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0ll(Test_aBFu8ll_BFu8ll_BFu0ll, "aBFu8ll_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0s");
    static aBFu8ll_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0s(Test_aBFu8ll_BFu8ll_BFu0s, "aBFu8ll_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0c");
    static aBFu8ll_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0c(Test_aBFu8ll_BFu8s_BFu0c, "aBFu8ll_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0i");
    static aBFu8ll_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0i(Test_aBFu8ll_BFu8s_BFu0i, "aBFu8ll_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0ll");
    static aBFu8ll_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0ll(Test_aBFu8ll_BFu8s_BFu0ll, "aBFu8ll_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0s");
    static aBFu8ll_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0s(Test_aBFu8ll_BFu8s_BFu0s, "aBFu8ll_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0c");
    static aBFu8ll_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0c(Test_aBFu8ll_BFu9i_BFu0c, "aBFu8ll_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0i");
    static aBFu8ll_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0i(Test_aBFu8ll_BFu9i_BFu0i, "aBFu8ll_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0ll");
    static aBFu8ll_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0ll(Test_aBFu8ll_BFu9i_BFu0ll, "aBFu8ll_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0s");
    static aBFu8ll_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0s(Test_aBFu8ll_BFu9i_BFu0s, "aBFu8ll_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0c");
    static aBFu8ll_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0c(Test_aBFu8ll_BFu9ll_BFu0c, "aBFu8ll_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0i");
    static aBFu8ll_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0i(Test_aBFu8ll_BFu9ll_BFu0i, "aBFu8ll_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0ll");
    static aBFu8ll_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0ll(Test_aBFu8ll_BFu9ll_BFu0ll, "aBFu8ll_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0s");
    static aBFu8ll_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0s(Test_aBFu8ll_BFu9ll_BFu0s, "aBFu8ll_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0c");
    static aBFu8ll_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0c(Test_aBFu8ll_BFu9s_BFu0c, "aBFu8ll_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0i");
    static aBFu8ll_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0i(Test_aBFu8ll_BFu9s_BFu0i, "aBFu8ll_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0ll");
    static aBFu8ll_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0ll(Test_aBFu8ll_BFu9s_BFu0ll, "aBFu8ll_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0s");
    static aBFu8ll_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0s(Test_aBFu8ll_BFu9s_BFu0s, "aBFu8ll_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0c()
{
  {
    init_simple_test("aBFu8ll_C_BFu0c");
    static aBFu8ll_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0c(Test_aBFu8ll_C_BFu0c, "aBFu8ll_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0i()
{
  {
    init_simple_test("aBFu8ll_C_BFu0i");
    static aBFu8ll_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0i(Test_aBFu8ll_C_BFu0i, "aBFu8ll_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_C_BFu0ll");
    static aBFu8ll_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0ll(Test_aBFu8ll_C_BFu0ll, "aBFu8ll_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0s()
{
  {
    init_simple_test("aBFu8ll_C_BFu0s");
    static aBFu8ll_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0s(Test_aBFu8ll_C_BFu0s, "aBFu8ll_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0c()
{
  {
    init_simple_test("aBFu8ll_D_BFu0c");
    static aBFu8ll_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0c(Test_aBFu8ll_D_BFu0c, "aBFu8ll_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0i()
{
  {
    init_simple_test("aBFu8ll_D_BFu0i");
    static aBFu8ll_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0i(Test_aBFu8ll_D_BFu0i, "aBFu8ll_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_D_BFu0ll");
    static aBFu8ll_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0ll(Test_aBFu8ll_D_BFu0ll, "aBFu8ll_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0s()
{
  {
    init_simple_test("aBFu8ll_D_BFu0s");
    static aBFu8ll_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0s(Test_aBFu8ll_D_BFu0s, "aBFu8ll_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0c()
{
  {
    init_simple_test("aBFu8ll_F_BFu0c");
    static aBFu8ll_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0c(Test_aBFu8ll_F_BFu0c, "aBFu8ll_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0i()
{
  {
    init_simple_test("aBFu8ll_F_BFu0i");
    static aBFu8ll_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0i(Test_aBFu8ll_F_BFu0i, "aBFu8ll_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_F_BFu0ll");
    static aBFu8ll_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0ll(Test_aBFu8ll_F_BFu0ll, "aBFu8ll_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0s()
{
  {
    init_simple_test("aBFu8ll_F_BFu0s");
    static aBFu8ll_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0s(Test_aBFu8ll_F_BFu0s, "aBFu8ll_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0c()
{
  {
    init_simple_test("aBFu8ll_I_BFu0c");
    static aBFu8ll_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0c(Test_aBFu8ll_I_BFu0c, "aBFu8ll_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0i()
{
  {
    init_simple_test("aBFu8ll_I_BFu0i");
    static aBFu8ll_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0i(Test_aBFu8ll_I_BFu0i, "aBFu8ll_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_I_BFu0ll");
    static aBFu8ll_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0ll(Test_aBFu8ll_I_BFu0ll, "aBFu8ll_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0s()
{
  {
    init_simple_test("aBFu8ll_I_BFu0s");
    static aBFu8ll_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0s(Test_aBFu8ll_I_BFu0s, "aBFu8ll_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0c");
    static aBFu8ll_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0c(Test_aBFu8ll_Ip_BFu0c, "aBFu8ll_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0i");
    static aBFu8ll_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0i(Test_aBFu8ll_Ip_BFu0i, "aBFu8ll_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0ll");
    static aBFu8ll_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0ll(Test_aBFu8ll_Ip_BFu0ll, "aBFu8ll_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0s");
    static aBFu8ll_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0s(Test_aBFu8ll_Ip_BFu0s, "aBFu8ll_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0c()
{
  {
    init_simple_test("aBFu8ll_L_BFu0c");
    static aBFu8ll_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0c(Test_aBFu8ll_L_BFu0c, "aBFu8ll_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0i()
{
  {
    init_simple_test("aBFu8ll_L_BFu0i");
    static aBFu8ll_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0i(Test_aBFu8ll_L_BFu0i, "aBFu8ll_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_L_BFu0ll");
    static aBFu8ll_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0ll(Test_aBFu8ll_L_BFu0ll, "aBFu8ll_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0s()
{
  {
    init_simple_test("aBFu8ll_L_BFu0s");
    static aBFu8ll_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0s(Test_aBFu8ll_L_BFu0s, "aBFu8ll_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0c()
{
  {
    init_simple_test("aBFu8ll_S_BFu0c");
    static aBFu8ll_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0c(Test_aBFu8ll_S_BFu0c, "aBFu8ll_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0i()
{
  {
    init_simple_test("aBFu8ll_S_BFu0i");
    static aBFu8ll_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0i(Test_aBFu8ll_S_BFu0i, "aBFu8ll_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_S_BFu0ll");
    static aBFu8ll_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0ll(Test_aBFu8ll_S_BFu0ll, "aBFu8ll_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0s()
{
  {
    init_simple_test("aBFu8ll_S_BFu0s");
    static aBFu8ll_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0s(Test_aBFu8ll_S_BFu0s, "aBFu8ll_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0c");
    static aBFu8ll_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0c(Test_aBFu8ll_Uc_BFu0c, "aBFu8ll_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0i");
    static aBFu8ll_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0i(Test_aBFu8ll_Uc_BFu0i, "aBFu8ll_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0ll");
    static aBFu8ll_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0ll(Test_aBFu8ll_Uc_BFu0ll, "aBFu8ll_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0s");
    static aBFu8ll_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0s(Test_aBFu8ll_Uc_BFu0s, "aBFu8ll_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0c");
    static aBFu8ll_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0c(Test_aBFu8ll_Ui_BFu0c, "aBFu8ll_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0i");
    static aBFu8ll_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0i(Test_aBFu8ll_Ui_BFu0i, "aBFu8ll_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0ll");
    static aBFu8ll_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0ll(Test_aBFu8ll_Ui_BFu0ll, "aBFu8ll_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0s");
    static aBFu8ll_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0s(Test_aBFu8ll_Ui_BFu0s, "aBFu8ll_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0c");
    static aBFu8ll_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0c(Test_aBFu8ll_Ul_BFu0c, "aBFu8ll_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0i");
    static aBFu8ll_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0i(Test_aBFu8ll_Ul_BFu0i, "aBFu8ll_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0ll");
    static aBFu8ll_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0ll(Test_aBFu8ll_Ul_BFu0ll, "aBFu8ll_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0s");
    static aBFu8ll_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0s(Test_aBFu8ll_Ul_BFu0s, "aBFu8ll_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0c");
    static aBFu8ll_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0c(Test_aBFu8ll_Us_BFu0c, "aBFu8ll_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0i");
    static aBFu8ll_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0i(Test_aBFu8ll_Us_BFu0i, "aBFu8ll_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0ll");
    static aBFu8ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0ll(Test_aBFu8ll_Us_BFu0ll, "aBFu8ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0s");
    static aBFu8ll_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0s(Test_aBFu8ll_Us_BFu0s, "aBFu8ll_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0c");
    static aBFu8ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0c(Test_aBFu8ll_Vp_BFu0c, "aBFu8ll_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0i");
    static aBFu8ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0i(Test_aBFu8ll_Vp_BFu0i, "aBFu8ll_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0ll");
    static aBFu8ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0ll(Test_aBFu8ll_Vp_BFu0ll, "aBFu8ll_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0s");
    static aBFu8ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0s(Test_aBFu8ll_Vp_BFu0s, "aBFu8ll_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0c");
    static aBFu8s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c(Test_aBFu8s_BFu0c, "aBFu8s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0c");
    static aBFu8s_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8s_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0c(Test_aBFu8s_BFu0c_BFu0c, "aBFu8s_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0i");
    static aBFu8s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0i(Test_aBFu8s_BFu0c_BFu0i, "aBFu8s_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0ll");
    static aBFu8s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0ll(Test_aBFu8s_BFu0c_BFu0ll, "aBFu8s_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0s");
    static aBFu8s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0s(Test_aBFu8s_BFu0c_BFu0s, "aBFu8s_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15i");
    static aBFu8s_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15i(Test_aBFu8s_BFu0c_BFu15i, "aBFu8s_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15ll");
    static aBFu8s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15ll(Test_aBFu8s_BFu0c_BFu15ll, "aBFu8s_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15s");
    static aBFu8s_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15s(Test_aBFu8s_BFu0c_BFu15s, "aBFu8s_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16i");
    static aBFu8s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16i(Test_aBFu8s_BFu0c_BFu16i, "aBFu8s_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16ll");
    static aBFu8s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16ll(Test_aBFu8s_BFu0c_BFu16ll, "aBFu8s_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16s");
    static aBFu8s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16s(Test_aBFu8s_BFu0c_BFu16s, "aBFu8s_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu17i");
    static aBFu8s_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu17i(Test_aBFu8s_BFu0c_BFu17i, "aBFu8s_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu17ll");
    static aBFu8s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu17ll(Test_aBFu8s_BFu0c_BFu17ll, "aBFu8s_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1c");
    static aBFu8s_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1c(Test_aBFu8s_BFu0c_BFu1c, "aBFu8s_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1i");
    static aBFu8s_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1i(Test_aBFu8s_BFu0c_BFu1i, "aBFu8s_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1ll");
    static aBFu8s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1ll(Test_aBFu8s_BFu0c_BFu1ll, "aBFu8s_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1s");
    static aBFu8s_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1s(Test_aBFu8s_BFu0c_BFu1s, "aBFu8s_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu31i");
    static aBFu8s_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu31i(Test_aBFu8s_BFu0c_BFu31i, "aBFu8s_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu31ll");
    static aBFu8s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu31ll(Test_aBFu8s_BFu0c_BFu31ll, "aBFu8s_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu32i");
    static aBFu8s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu32i(Test_aBFu8s_BFu0c_BFu32i, "aBFu8s_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu32ll");
    static aBFu8s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu32ll(Test_aBFu8s_BFu0c_BFu32ll, "aBFu8s_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu33");
    static aBFu8s_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu33(Test_aBFu8s_BFu0c_BFu33, "aBFu8s_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7c");
    static aBFu8s_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7c(Test_aBFu8s_BFu0c_BFu7c, "aBFu8s_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7i");
    static aBFu8s_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7i(Test_aBFu8s_BFu0c_BFu7i, "aBFu8s_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7ll");
    static aBFu8s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7ll(Test_aBFu8s_BFu0c_BFu7ll, "aBFu8s_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7s");
    static aBFu8s_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7s(Test_aBFu8s_BFu0c_BFu7s, "aBFu8s_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8c");
    static aBFu8s_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8c(Test_aBFu8s_BFu0c_BFu8c, "aBFu8s_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8i");
    static aBFu8s_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8i(Test_aBFu8s_BFu0c_BFu8i, "aBFu8s_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8ll");
    static aBFu8s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8ll(Test_aBFu8s_BFu0c_BFu8ll, "aBFu8s_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8s");
    static aBFu8s_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8s(Test_aBFu8s_BFu0c_BFu8s, "aBFu8s_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9i");
    static aBFu8s_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9i(Test_aBFu8s_BFu0c_BFu9i, "aBFu8s_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9ll");
    static aBFu8s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9ll(Test_aBFu8s_BFu0c_BFu9ll, "aBFu8s_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9s");
    static aBFu8s_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9s(Test_aBFu8s_BFu0c_BFu9s, "aBFu8s_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_C()
{
  {
    init_simple_test("aBFu8s_BFu0c_C");
    static aBFu8s_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_C(Test_aBFu8s_BFu0c_C, "aBFu8s_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_D()
{
  {
    init_simple_test("aBFu8s_BFu0c_D");
    static aBFu8s_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_D(Test_aBFu8s_BFu0c_D, "aBFu8s_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_F()
{
  {
    init_simple_test("aBFu8s_BFu0c_F");
    static aBFu8s_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_F(Test_aBFu8s_BFu0c_F, "aBFu8s_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_I()
{
  {
    init_simple_test("aBFu8s_BFu0c_I");
    static aBFu8s_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_I(Test_aBFu8s_BFu0c_I, "aBFu8s_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ip");
    static aBFu8s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ip(Test_aBFu8s_BFu0c_Ip, "aBFu8s_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_L()
{
  {
    init_simple_test("aBFu8s_BFu0c_L");
    static aBFu8s_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_L(Test_aBFu8s_BFu0c_L, "aBFu8s_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_S()
{
  {
    init_simple_test("aBFu8s_BFu0c_S");
    static aBFu8s_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_S(Test_aBFu8s_BFu0c_S, "aBFu8s_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0c_Uc");
    static aBFu8s_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Uc(Test_aBFu8s_BFu0c_Uc, "aBFu8s_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ui");
    static aBFu8s_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ui(Test_aBFu8s_BFu0c_Ui, "aBFu8s_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ul");
    static aBFu8s_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ul(Test_aBFu8s_BFu0c_Ul, "aBFu8s_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Us()
{
  {
    init_simple_test("aBFu8s_BFu0c_Us");
    static aBFu8s_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Us(Test_aBFu8s_BFu0c_Us, "aBFu8s_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0c_Vp");
    static aBFu8s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Vp(Test_aBFu8s_BFu0c_Vp, "aBFu8s_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0i");
    static aBFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i(Test_aBFu8s_BFu0i, "aBFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0c");
    static aBFu8s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0c(Test_aBFu8s_BFu0i_BFu0c, "aBFu8s_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0i");
    static aBFu8s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0i(Test_aBFu8s_BFu0i_BFu0i, "aBFu8s_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0ll");
    static aBFu8s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0ll(Test_aBFu8s_BFu0i_BFu0ll, "aBFu8s_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0s");
    static aBFu8s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0s(Test_aBFu8s_BFu0i_BFu0s, "aBFu8s_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15i");
    static aBFu8s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15i(Test_aBFu8s_BFu0i_BFu15i, "aBFu8s_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15ll");
    static aBFu8s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15ll(Test_aBFu8s_BFu0i_BFu15ll, "aBFu8s_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15s");
    static aBFu8s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15s(Test_aBFu8s_BFu0i_BFu15s, "aBFu8s_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16i");
    static aBFu8s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16i(Test_aBFu8s_BFu0i_BFu16i, "aBFu8s_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16ll");
    static aBFu8s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16ll(Test_aBFu8s_BFu0i_BFu16ll, "aBFu8s_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16s");
    static aBFu8s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16s(Test_aBFu8s_BFu0i_BFu16s, "aBFu8s_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu17i");
    static aBFu8s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu17i(Test_aBFu8s_BFu0i_BFu17i, "aBFu8s_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu17ll");
    static aBFu8s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu17ll(Test_aBFu8s_BFu0i_BFu17ll, "aBFu8s_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1c");
    static aBFu8s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1c(Test_aBFu8s_BFu0i_BFu1c, "aBFu8s_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1i");
    static aBFu8s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1i(Test_aBFu8s_BFu0i_BFu1i, "aBFu8s_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1ll");
    static aBFu8s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1ll(Test_aBFu8s_BFu0i_BFu1ll, "aBFu8s_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1s");
    static aBFu8s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1s(Test_aBFu8s_BFu0i_BFu1s, "aBFu8s_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu31i");
    static aBFu8s_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu31i(Test_aBFu8s_BFu0i_BFu31i, "aBFu8s_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu31ll");
    static aBFu8s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu31ll(Test_aBFu8s_BFu0i_BFu31ll, "aBFu8s_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu32i");
    static aBFu8s_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu32i(Test_aBFu8s_BFu0i_BFu32i, "aBFu8s_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu32ll");
    static aBFu8s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu32ll(Test_aBFu8s_BFu0i_BFu32ll, "aBFu8s_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu33");
    static aBFu8s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8s_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu33(Test_aBFu8s_BFu0i_BFu33, "aBFu8s_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7c");
    static aBFu8s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7c(Test_aBFu8s_BFu0i_BFu7c, "aBFu8s_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7i");
    static aBFu8s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7i(Test_aBFu8s_BFu0i_BFu7i, "aBFu8s_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7ll");
    static aBFu8s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7ll(Test_aBFu8s_BFu0i_BFu7ll, "aBFu8s_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7s");
    static aBFu8s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7s(Test_aBFu8s_BFu0i_BFu7s, "aBFu8s_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8c");
    static aBFu8s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8c(Test_aBFu8s_BFu0i_BFu8c, "aBFu8s_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8i");
    static aBFu8s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8i(Test_aBFu8s_BFu0i_BFu8i, "aBFu8s_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8ll");
    static aBFu8s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8ll(Test_aBFu8s_BFu0i_BFu8ll, "aBFu8s_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8s");
    static aBFu8s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8s(Test_aBFu8s_BFu0i_BFu8s, "aBFu8s_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9i");
    static aBFu8s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9i(Test_aBFu8s_BFu0i_BFu9i, "aBFu8s_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9ll");
    static aBFu8s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9ll(Test_aBFu8s_BFu0i_BFu9ll, "aBFu8s_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9s");
    static aBFu8s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9s(Test_aBFu8s_BFu0i_BFu9s, "aBFu8s_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_C()
{
  {
    init_simple_test("aBFu8s_BFu0i_C");
    static aBFu8s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_C(Test_aBFu8s_BFu0i_C, "aBFu8s_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_D()
{
  {
    init_simple_test("aBFu8s_BFu0i_D");
    static aBFu8s_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_D(Test_aBFu8s_BFu0i_D, "aBFu8s_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_F()
{
  {
    init_simple_test("aBFu8s_BFu0i_F");
    static aBFu8s_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_F(Test_aBFu8s_BFu0i_F, "aBFu8s_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_I()
{
  {
    init_simple_test("aBFu8s_BFu0i_I");
    static aBFu8s_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_I(Test_aBFu8s_BFu0i_I, "aBFu8s_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ip");
    static aBFu8s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ip(Test_aBFu8s_BFu0i_Ip, "aBFu8s_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_L()
{
  {
    init_simple_test("aBFu8s_BFu0i_L");
    static aBFu8s_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_L(Test_aBFu8s_BFu0i_L, "aBFu8s_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_S()
{
  {
    init_simple_test("aBFu8s_BFu0i_S");
    static aBFu8s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_S(Test_aBFu8s_BFu0i_S, "aBFu8s_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0i_Uc");
    static aBFu8s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Uc(Test_aBFu8s_BFu0i_Uc, "aBFu8s_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ui");
    static aBFu8s_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ui(Test_aBFu8s_BFu0i_Ui, "aBFu8s_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ul");
    static aBFu8s_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ul(Test_aBFu8s_BFu0i_Ul, "aBFu8s_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Us()
{
  {
    init_simple_test("aBFu8s_BFu0i_Us");
    static aBFu8s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Us(Test_aBFu8s_BFu0i_Us, "aBFu8s_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0i_Vp");
    static aBFu8s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Vp(Test_aBFu8s_BFu0i_Vp, "aBFu8s_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll");
    static aBFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll(Test_aBFu8s_BFu0ll, "aBFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0c");
    static aBFu8s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0c(Test_aBFu8s_BFu0ll_BFu0c, "aBFu8s_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0i");
    static aBFu8s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0i(Test_aBFu8s_BFu0ll_BFu0i, "aBFu8s_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0ll");
    static aBFu8s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0ll(Test_aBFu8s_BFu0ll_BFu0ll, "aBFu8s_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0s");
    static aBFu8s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0s(Test_aBFu8s_BFu0ll_BFu0s, "aBFu8s_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15i");
    static aBFu8s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15i(Test_aBFu8s_BFu0ll_BFu15i, "aBFu8s_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15ll");
    static aBFu8s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15ll(Test_aBFu8s_BFu0ll_BFu15ll, "aBFu8s_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15s");
    static aBFu8s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15s(Test_aBFu8s_BFu0ll_BFu15s, "aBFu8s_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16i");
    static aBFu8s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16i(Test_aBFu8s_BFu0ll_BFu16i, "aBFu8s_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16ll");
    static aBFu8s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16ll(Test_aBFu8s_BFu0ll_BFu16ll, "aBFu8s_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16s");
    static aBFu8s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16s(Test_aBFu8s_BFu0ll_BFu16s, "aBFu8s_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu17i");
    static aBFu8s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu17i(Test_aBFu8s_BFu0ll_BFu17i, "aBFu8s_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu17ll");
    static aBFu8s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu17ll(Test_aBFu8s_BFu0ll_BFu17ll, "aBFu8s_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1c");
    static aBFu8s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1c(Test_aBFu8s_BFu0ll_BFu1c, "aBFu8s_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1i");
    static aBFu8s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1i(Test_aBFu8s_BFu0ll_BFu1i, "aBFu8s_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1ll");
    static aBFu8s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1ll(Test_aBFu8s_BFu0ll_BFu1ll, "aBFu8s_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1s");
    static aBFu8s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1s(Test_aBFu8s_BFu0ll_BFu1s, "aBFu8s_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu31i");
    static aBFu8s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu31i(Test_aBFu8s_BFu0ll_BFu31i, "aBFu8s_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu31ll");
    static aBFu8s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu31ll(Test_aBFu8s_BFu0ll_BFu31ll, "aBFu8s_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu32i");
    static aBFu8s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu32i(Test_aBFu8s_BFu0ll_BFu32i, "aBFu8s_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu32ll");
    static aBFu8s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu32ll(Test_aBFu8s_BFu0ll_BFu32ll, "aBFu8s_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu33");
    static aBFu8s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8s_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu33(Test_aBFu8s_BFu0ll_BFu33, "aBFu8s_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7c");
    static aBFu8s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7c(Test_aBFu8s_BFu0ll_BFu7c, "aBFu8s_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7i");
    static aBFu8s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7i(Test_aBFu8s_BFu0ll_BFu7i, "aBFu8s_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7ll");
    static aBFu8s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7ll(Test_aBFu8s_BFu0ll_BFu7ll, "aBFu8s_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7s");
    static aBFu8s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7s(Test_aBFu8s_BFu0ll_BFu7s, "aBFu8s_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8c");
    static aBFu8s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8c(Test_aBFu8s_BFu0ll_BFu8c, "aBFu8s_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8i");
    static aBFu8s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8i(Test_aBFu8s_BFu0ll_BFu8i, "aBFu8s_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8ll");
    static aBFu8s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8ll(Test_aBFu8s_BFu0ll_BFu8ll, "aBFu8s_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8s");
    static aBFu8s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8s(Test_aBFu8s_BFu0ll_BFu8s, "aBFu8s_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9i");
    static aBFu8s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9i(Test_aBFu8s_BFu0ll_BFu9i, "aBFu8s_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9ll");
    static aBFu8s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9ll(Test_aBFu8s_BFu0ll_BFu9ll, "aBFu8s_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9s");
    static aBFu8s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9s(Test_aBFu8s_BFu0ll_BFu9s, "aBFu8s_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_C()
{
  {
    init_simple_test("aBFu8s_BFu0ll_C");
    static aBFu8s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_C(Test_aBFu8s_BFu0ll_C, "aBFu8s_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_D()
{
  {
    init_simple_test("aBFu8s_BFu0ll_D");
    static aBFu8s_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_D(Test_aBFu8s_BFu0ll_D, "aBFu8s_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_F()
{
  {
    init_simple_test("aBFu8s_BFu0ll_F");
    static aBFu8s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_F(Test_aBFu8s_BFu0ll_F, "aBFu8s_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_I()
{
  {
    init_simple_test("aBFu8s_BFu0ll_I");
    static aBFu8s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_I(Test_aBFu8s_BFu0ll_I, "aBFu8s_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ip");
    static aBFu8s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ip(Test_aBFu8s_BFu0ll_Ip, "aBFu8s_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_L()
{
  {
    init_simple_test("aBFu8s_BFu0ll_L");
    static aBFu8s_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_L(Test_aBFu8s_BFu0ll_L, "aBFu8s_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_S()
{
  {
    init_simple_test("aBFu8s_BFu0ll_S");
    static aBFu8s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_S(Test_aBFu8s_BFu0ll_S, "aBFu8s_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Uc");
    static aBFu8s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Uc(Test_aBFu8s_BFu0ll_Uc, "aBFu8s_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ui");
    static aBFu8s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ui(Test_aBFu8s_BFu0ll_Ui, "aBFu8s_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ul");
    static aBFu8s_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ul(Test_aBFu8s_BFu0ll_Ul, "aBFu8s_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Us");
    static aBFu8s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Us(Test_aBFu8s_BFu0ll_Us, "aBFu8s_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Vp");
    static aBFu8s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Vp(Test_aBFu8s_BFu0ll_Vp, "aBFu8s_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0s");
    static aBFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s(Test_aBFu8s_BFu0s, "aBFu8s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0c");
    static aBFu8s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0c(Test_aBFu8s_BFu0s_BFu0c, "aBFu8s_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0i");
    static aBFu8s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0i(Test_aBFu8s_BFu0s_BFu0i, "aBFu8s_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0ll");
    static aBFu8s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0ll(Test_aBFu8s_BFu0s_BFu0ll, "aBFu8s_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0s");
    static aBFu8s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0s(Test_aBFu8s_BFu0s_BFu0s, "aBFu8s_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15i");
    static aBFu8s_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15i(Test_aBFu8s_BFu0s_BFu15i, "aBFu8s_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15ll");
    static aBFu8s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15ll(Test_aBFu8s_BFu0s_BFu15ll, "aBFu8s_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15s");
    static aBFu8s_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15s(Test_aBFu8s_BFu0s_BFu15s, "aBFu8s_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16i");
    static aBFu8s_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16i(Test_aBFu8s_BFu0s_BFu16i, "aBFu8s_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16ll");
    static aBFu8s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16ll(Test_aBFu8s_BFu0s_BFu16ll, "aBFu8s_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16s");
    static aBFu8s_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16s(Test_aBFu8s_BFu0s_BFu16s, "aBFu8s_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu17i");
    static aBFu8s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu17i(Test_aBFu8s_BFu0s_BFu17i, "aBFu8s_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu17ll");
    static aBFu8s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu17ll(Test_aBFu8s_BFu0s_BFu17ll, "aBFu8s_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1c");
    static aBFu8s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1c(Test_aBFu8s_BFu0s_BFu1c, "aBFu8s_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1i");
    static aBFu8s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1i(Test_aBFu8s_BFu0s_BFu1i, "aBFu8s_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1ll");
    static aBFu8s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1ll(Test_aBFu8s_BFu0s_BFu1ll, "aBFu8s_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1s");
    static aBFu8s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1s(Test_aBFu8s_BFu0s_BFu1s, "aBFu8s_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu31i");
    static aBFu8s_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu31i(Test_aBFu8s_BFu0s_BFu31i, "aBFu8s_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu31ll");
    static aBFu8s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu31ll(Test_aBFu8s_BFu0s_BFu31ll, "aBFu8s_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu32i");
    static aBFu8s_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu32i(Test_aBFu8s_BFu0s_BFu32i, "aBFu8s_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu32ll");
    static aBFu8s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu32ll(Test_aBFu8s_BFu0s_BFu32ll, "aBFu8s_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu33");
    static aBFu8s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu33(Test_aBFu8s_BFu0s_BFu33, "aBFu8s_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7c");
    static aBFu8s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7c(Test_aBFu8s_BFu0s_BFu7c, "aBFu8s_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7i");
    static aBFu8s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7i(Test_aBFu8s_BFu0s_BFu7i, "aBFu8s_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7ll");
    static aBFu8s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7ll(Test_aBFu8s_BFu0s_BFu7ll, "aBFu8s_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7s");
    static aBFu8s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7s(Test_aBFu8s_BFu0s_BFu7s, "aBFu8s_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8c");
    static aBFu8s_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8c(Test_aBFu8s_BFu0s_BFu8c, "aBFu8s_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8i");
    static aBFu8s_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8i(Test_aBFu8s_BFu0s_BFu8i, "aBFu8s_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8ll");
    static aBFu8s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8ll(Test_aBFu8s_BFu0s_BFu8ll, "aBFu8s_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8s");
    static aBFu8s_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8s(Test_aBFu8s_BFu0s_BFu8s, "aBFu8s_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9i");
    static aBFu8s_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9i(Test_aBFu8s_BFu0s_BFu9i, "aBFu8s_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9ll");
    static aBFu8s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9ll(Test_aBFu8s_BFu0s_BFu9ll, "aBFu8s_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9s");
    static aBFu8s_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9s(Test_aBFu8s_BFu0s_BFu9s, "aBFu8s_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_C()
{
  {
    init_simple_test("aBFu8s_BFu0s_C");
    static aBFu8s_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_C(Test_aBFu8s_BFu0s_C, "aBFu8s_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_D()
{
  {
    init_simple_test("aBFu8s_BFu0s_D");
    static aBFu8s_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_D(Test_aBFu8s_BFu0s_D, "aBFu8s_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_F()
{
  {
    init_simple_test("aBFu8s_BFu0s_F");
    static aBFu8s_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_F(Test_aBFu8s_BFu0s_F, "aBFu8s_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_I()
{
  {
    init_simple_test("aBFu8s_BFu0s_I");
    static aBFu8s_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_I(Test_aBFu8s_BFu0s_I, "aBFu8s_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ip");
    static aBFu8s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ip(Test_aBFu8s_BFu0s_Ip, "aBFu8s_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_L()
{
  {
    init_simple_test("aBFu8s_BFu0s_L");
    static aBFu8s_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_L(Test_aBFu8s_BFu0s_L, "aBFu8s_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_S()
{
  {
    init_simple_test("aBFu8s_BFu0s_S");
    static aBFu8s_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_S(Test_aBFu8s_BFu0s_S, "aBFu8s_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0s_Uc");
    static aBFu8s_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Uc(Test_aBFu8s_BFu0s_Uc, "aBFu8s_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ui");
    static aBFu8s_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ui(Test_aBFu8s_BFu0s_Ui, "aBFu8s_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ul");
    static aBFu8s_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ul(Test_aBFu8s_BFu0s_Ul, "aBFu8s_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Us()
{
  {
    init_simple_test("aBFu8s_BFu0s_Us");
    static aBFu8s_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Us(Test_aBFu8s_BFu0s_Us, "aBFu8s_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0s_Vp");
    static aBFu8s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Vp(Test_aBFu8s_BFu0s_Vp, "aBFu8s_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0c");
    static aBFu8s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0c(Test_aBFu8s_BFu15i_BFu0c, "aBFu8s_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0i");
    static aBFu8s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0i(Test_aBFu8s_BFu15i_BFu0i, "aBFu8s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0ll");
    static aBFu8s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0ll(Test_aBFu8s_BFu15i_BFu0ll, "aBFu8s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0s");
    static aBFu8s_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0s(Test_aBFu8s_BFu15i_BFu0s, "aBFu8s_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0c");
    static aBFu8s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0c(Test_aBFu8s_BFu15ll_BFu0c, "aBFu8s_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0i");
    static aBFu8s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0i(Test_aBFu8s_BFu15ll_BFu0i, "aBFu8s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0ll");
    static aBFu8s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0ll(Test_aBFu8s_BFu15ll_BFu0ll, "aBFu8s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0s");
    static aBFu8s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0s(Test_aBFu8s_BFu15ll_BFu0s, "aBFu8s_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0c");
    static aBFu8s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0c(Test_aBFu8s_BFu15s_BFu0c, "aBFu8s_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0i");
    static aBFu8s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0i(Test_aBFu8s_BFu15s_BFu0i, "aBFu8s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0ll");
    static aBFu8s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0ll(Test_aBFu8s_BFu15s_BFu0ll, "aBFu8s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0s");
    static aBFu8s_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0s(Test_aBFu8s_BFu15s_BFu0s, "aBFu8s_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0c");
    static aBFu8s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0c(Test_aBFu8s_BFu16i_BFu0c, "aBFu8s_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0i");
    static aBFu8s_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0i(Test_aBFu8s_BFu16i_BFu0i, "aBFu8s_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0ll");
    static aBFu8s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0ll(Test_aBFu8s_BFu16i_BFu0ll, "aBFu8s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0s");
    static aBFu8s_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0s(Test_aBFu8s_BFu16i_BFu0s, "aBFu8s_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0c");
    static aBFu8s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0c(Test_aBFu8s_BFu16ll_BFu0c, "aBFu8s_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0i");
    static aBFu8s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0i(Test_aBFu8s_BFu16ll_BFu0i, "aBFu8s_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0ll");
    static aBFu8s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0ll(Test_aBFu8s_BFu16ll_BFu0ll, "aBFu8s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0s");
    static aBFu8s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0s(Test_aBFu8s_BFu16ll_BFu0s, "aBFu8s_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0c");
    static aBFu8s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0c(Test_aBFu8s_BFu16s_BFu0c, "aBFu8s_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0i");
    static aBFu8s_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0i(Test_aBFu8s_BFu16s_BFu0i, "aBFu8s_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0ll");
    static aBFu8s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0ll(Test_aBFu8s_BFu16s_BFu0ll, "aBFu8s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0s");
    static aBFu8s_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0s(Test_aBFu8s_BFu16s_BFu0s, "aBFu8s_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0c");
    static aBFu8s_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0c(Test_aBFu8s_BFu17i_BFu0c, "aBFu8s_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0i");
    static aBFu8s_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0i(Test_aBFu8s_BFu17i_BFu0i, "aBFu8s_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0ll");
    static aBFu8s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0ll(Test_aBFu8s_BFu17i_BFu0ll, "aBFu8s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0s");
    static aBFu8s_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0s(Test_aBFu8s_BFu17i_BFu0s, "aBFu8s_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0c");
    static aBFu8s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0c(Test_aBFu8s_BFu17ll_BFu0c, "aBFu8s_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0i");
    static aBFu8s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0i(Test_aBFu8s_BFu17ll_BFu0i, "aBFu8s_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0ll");
    static aBFu8s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0ll(Test_aBFu8s_BFu17ll_BFu0ll, "aBFu8s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0s");
    static aBFu8s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0s(Test_aBFu8s_BFu17ll_BFu0s, "aBFu8s_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0c");
    static aBFu8s_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0c(Test_aBFu8s_BFu1c_BFu0c, "aBFu8s_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0i");
    static aBFu8s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0i(Test_aBFu8s_BFu1c_BFu0i, "aBFu8s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0ll");
    static aBFu8s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0ll(Test_aBFu8s_BFu1c_BFu0ll, "aBFu8s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0s");
    static aBFu8s_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0s(Test_aBFu8s_BFu1c_BFu0s, "aBFu8s_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0c");
    static aBFu8s_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0c(Test_aBFu8s_BFu1i_BFu0c, "aBFu8s_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0i");
    static aBFu8s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0i(Test_aBFu8s_BFu1i_BFu0i, "aBFu8s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0ll");
    static aBFu8s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0ll(Test_aBFu8s_BFu1i_BFu0ll, "aBFu8s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0s");
    static aBFu8s_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0s(Test_aBFu8s_BFu1i_BFu0s, "aBFu8s_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0c");
    static aBFu8s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0c(Test_aBFu8s_BFu1ll_BFu0c, "aBFu8s_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0i");
    static aBFu8s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0i(Test_aBFu8s_BFu1ll_BFu0i, "aBFu8s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0ll");
    static aBFu8s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0ll(Test_aBFu8s_BFu1ll_BFu0ll, "aBFu8s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0s");
    static aBFu8s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0s(Test_aBFu8s_BFu1ll_BFu0s, "aBFu8s_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0c");
    static aBFu8s_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0c(Test_aBFu8s_BFu1s_BFu0c, "aBFu8s_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0i");
    static aBFu8s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0i(Test_aBFu8s_BFu1s_BFu0i, "aBFu8s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0ll");
    static aBFu8s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0ll(Test_aBFu8s_BFu1s_BFu0ll, "aBFu8s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0s");
    static aBFu8s_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0s(Test_aBFu8s_BFu1s_BFu0s, "aBFu8s_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0c");
    static aBFu8s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0c(Test_aBFu8s_BFu31i_BFu0c, "aBFu8s_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0i");
    static aBFu8s_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0i(Test_aBFu8s_BFu31i_BFu0i, "aBFu8s_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0ll");
    static aBFu8s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0ll(Test_aBFu8s_BFu31i_BFu0ll, "aBFu8s_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0s");
    static aBFu8s_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0s(Test_aBFu8s_BFu31i_BFu0s, "aBFu8s_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0c");
    static aBFu8s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0c(Test_aBFu8s_BFu31ll_BFu0c, "aBFu8s_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0i");
    static aBFu8s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0i(Test_aBFu8s_BFu31ll_BFu0i, "aBFu8s_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0ll");
    static aBFu8s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0ll(Test_aBFu8s_BFu31ll_BFu0ll, "aBFu8s_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0s");
    static aBFu8s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0s(Test_aBFu8s_BFu31ll_BFu0s, "aBFu8s_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0c");
    static aBFu8s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0c(Test_aBFu8s_BFu32i_BFu0c, "aBFu8s_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0i");
    static aBFu8s_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0i(Test_aBFu8s_BFu32i_BFu0i, "aBFu8s_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0ll");
    static aBFu8s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0ll(Test_aBFu8s_BFu32i_BFu0ll, "aBFu8s_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0s");
    static aBFu8s_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0s(Test_aBFu8s_BFu32i_BFu0s, "aBFu8s_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0c");
    static aBFu8s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0c(Test_aBFu8s_BFu32ll_BFu0c, "aBFu8s_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0i");
    static aBFu8s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0i(Test_aBFu8s_BFu32ll_BFu0i, "aBFu8s_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0ll");
    static aBFu8s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0ll(Test_aBFu8s_BFu32ll_BFu0ll, "aBFu8s_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0s");
    static aBFu8s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0s(Test_aBFu8s_BFu32ll_BFu0s, "aBFu8s_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0c");
    static aBFu8s_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0c(Test_aBFu8s_BFu33_BFu0c, "aBFu8s_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0i");
    static aBFu8s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0i(Test_aBFu8s_BFu33_BFu0i, "aBFu8s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0ll");
    static aBFu8s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0ll(Test_aBFu8s_BFu33_BFu0ll, "aBFu8s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0s");
    static aBFu8s_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0s(Test_aBFu8s_BFu33_BFu0s, "aBFu8s_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0c");
    static aBFu8s_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0c(Test_aBFu8s_BFu7c_BFu0c, "aBFu8s_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0i");
    static aBFu8s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0i(Test_aBFu8s_BFu7c_BFu0i, "aBFu8s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0ll");
    static aBFu8s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0ll(Test_aBFu8s_BFu7c_BFu0ll, "aBFu8s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0s");
    static aBFu8s_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0s(Test_aBFu8s_BFu7c_BFu0s, "aBFu8s_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0c");
    static aBFu8s_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0c(Test_aBFu8s_BFu7i_BFu0c, "aBFu8s_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0i");
    static aBFu8s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0i(Test_aBFu8s_BFu7i_BFu0i, "aBFu8s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0ll");
    static aBFu8s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0ll(Test_aBFu8s_BFu7i_BFu0ll, "aBFu8s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0s");
    static aBFu8s_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0s(Test_aBFu8s_BFu7i_BFu0s, "aBFu8s_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0c");
    static aBFu8s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0c(Test_aBFu8s_BFu7ll_BFu0c, "aBFu8s_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0i");
    static aBFu8s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0i(Test_aBFu8s_BFu7ll_BFu0i, "aBFu8s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0ll");
    static aBFu8s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0ll(Test_aBFu8s_BFu7ll_BFu0ll, "aBFu8s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0s");
    static aBFu8s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0s(Test_aBFu8s_BFu7ll_BFu0s, "aBFu8s_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0c");
    static aBFu8s_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0c(Test_aBFu8s_BFu7s_BFu0c, "aBFu8s_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0i");
    static aBFu8s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0i(Test_aBFu8s_BFu7s_BFu0i, "aBFu8s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0ll");
    static aBFu8s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0ll(Test_aBFu8s_BFu7s_BFu0ll, "aBFu8s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0s");
    static aBFu8s_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0s(Test_aBFu8s_BFu7s_BFu0s, "aBFu8s_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0c");
    static aBFu8s_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0c(Test_aBFu8s_BFu8c_BFu0c, "aBFu8s_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0i");
    static aBFu8s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0i(Test_aBFu8s_BFu8c_BFu0i, "aBFu8s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0ll");
    static aBFu8s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0ll(Test_aBFu8s_BFu8c_BFu0ll, "aBFu8s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0s");
    static aBFu8s_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0s(Test_aBFu8s_BFu8c_BFu0s, "aBFu8s_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0c");
    static aBFu8s_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0c(Test_aBFu8s_BFu8i_BFu0c, "aBFu8s_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0i");
    static aBFu8s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0i(Test_aBFu8s_BFu8i_BFu0i, "aBFu8s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0ll");
    static aBFu8s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0ll(Test_aBFu8s_BFu8i_BFu0ll, "aBFu8s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0s");
    static aBFu8s_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0s(Test_aBFu8s_BFu8i_BFu0s, "aBFu8s_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0c");
    static aBFu8s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0c(Test_aBFu8s_BFu8ll_BFu0c, "aBFu8s_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0i");
    static aBFu8s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0i(Test_aBFu8s_BFu8ll_BFu0i, "aBFu8s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0ll");
    static aBFu8s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0ll(Test_aBFu8s_BFu8ll_BFu0ll, "aBFu8s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0s");
    static aBFu8s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0s(Test_aBFu8s_BFu8ll_BFu0s, "aBFu8s_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0c");
    static aBFu8s_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0c(Test_aBFu8s_BFu8s_BFu0c, "aBFu8s_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0i");
    static aBFu8s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0i(Test_aBFu8s_BFu8s_BFu0i, "aBFu8s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0ll");
    static aBFu8s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0ll(Test_aBFu8s_BFu8s_BFu0ll, "aBFu8s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0s");
    static aBFu8s_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0s(Test_aBFu8s_BFu8s_BFu0s, "aBFu8s_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0c");
    static aBFu8s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0c(Test_aBFu8s_BFu9i_BFu0c, "aBFu8s_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0i");
    static aBFu8s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0i(Test_aBFu8s_BFu9i_BFu0i, "aBFu8s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0ll");
    static aBFu8s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0ll(Test_aBFu8s_BFu9i_BFu0ll, "aBFu8s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0s");
    static aBFu8s_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0s(Test_aBFu8s_BFu9i_BFu0s, "aBFu8s_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0c");
    static aBFu8s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0c(Test_aBFu8s_BFu9ll_BFu0c, "aBFu8s_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0i");
    static aBFu8s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0i(Test_aBFu8s_BFu9ll_BFu0i, "aBFu8s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0ll");
    static aBFu8s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0ll(Test_aBFu8s_BFu9ll_BFu0ll, "aBFu8s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0s");
    static aBFu8s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0s(Test_aBFu8s_BFu9ll_BFu0s, "aBFu8s_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0c");
    static aBFu8s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0c(Test_aBFu8s_BFu9s_BFu0c, "aBFu8s_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0i");
    static aBFu8s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0i(Test_aBFu8s_BFu9s_BFu0i, "aBFu8s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0ll");
    static aBFu8s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0ll(Test_aBFu8s_BFu9s_BFu0ll, "aBFu8s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0s");
    static aBFu8s_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0s(Test_aBFu8s_BFu9s_BFu0s, "aBFu8s_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0c()
{
  {
    init_simple_test("aBFu8s_C_BFu0c");
    static aBFu8s_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0c(Test_aBFu8s_C_BFu0c, "aBFu8s_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0i()
{
  {
    init_simple_test("aBFu8s_C_BFu0i");
    static aBFu8s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0i(Test_aBFu8s_C_BFu0i, "aBFu8s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0ll()
{
  {
    init_simple_test("aBFu8s_C_BFu0ll");
    static aBFu8s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0ll(Test_aBFu8s_C_BFu0ll, "aBFu8s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0s()
{
  {
    init_simple_test("aBFu8s_C_BFu0s");
    static aBFu8s_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0s(Test_aBFu8s_C_BFu0s, "aBFu8s_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0c()
{
  {
    init_simple_test("aBFu8s_D_BFu0c");
    static aBFu8s_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0c(Test_aBFu8s_D_BFu0c, "aBFu8s_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0i()
{
  {
    init_simple_test("aBFu8s_D_BFu0i");
    static aBFu8s_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0i(Test_aBFu8s_D_BFu0i, "aBFu8s_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0ll()
{
  {
    init_simple_test("aBFu8s_D_BFu0ll");
    static aBFu8s_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0ll(Test_aBFu8s_D_BFu0ll, "aBFu8s_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0s()
{
  {
    init_simple_test("aBFu8s_D_BFu0s");
    static aBFu8s_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0s(Test_aBFu8s_D_BFu0s, "aBFu8s_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0c()
{
  {
    init_simple_test("aBFu8s_F_BFu0c");
    static aBFu8s_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0c(Test_aBFu8s_F_BFu0c, "aBFu8s_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0i()
{
  {
    init_simple_test("aBFu8s_F_BFu0i");
    static aBFu8s_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0i(Test_aBFu8s_F_BFu0i, "aBFu8s_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0ll()
{
  {
    init_simple_test("aBFu8s_F_BFu0ll");
    static aBFu8s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0ll(Test_aBFu8s_F_BFu0ll, "aBFu8s_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0s()
{
  {
    init_simple_test("aBFu8s_F_BFu0s");
    static aBFu8s_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0s(Test_aBFu8s_F_BFu0s, "aBFu8s_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0c()
{
  {
    init_simple_test("aBFu8s_I_BFu0c");
    static aBFu8s_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0c(Test_aBFu8s_I_BFu0c, "aBFu8s_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0i()
{
  {
    init_simple_test("aBFu8s_I_BFu0i");
    static aBFu8s_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0i(Test_aBFu8s_I_BFu0i, "aBFu8s_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0ll()
{
  {
    init_simple_test("aBFu8s_I_BFu0ll");
    static aBFu8s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0ll(Test_aBFu8s_I_BFu0ll, "aBFu8s_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0s()
{
  {
    init_simple_test("aBFu8s_I_BFu0s");
    static aBFu8s_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0s(Test_aBFu8s_I_BFu0s, "aBFu8s_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0c");
    static aBFu8s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0c(Test_aBFu8s_Ip_BFu0c, "aBFu8s_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0i");
    static aBFu8s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0i(Test_aBFu8s_Ip_BFu0i, "aBFu8s_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0ll");
    static aBFu8s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0ll(Test_aBFu8s_Ip_BFu0ll, "aBFu8s_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0s");
    static aBFu8s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0s(Test_aBFu8s_Ip_BFu0s, "aBFu8s_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0c()
{
  {
    init_simple_test("aBFu8s_L_BFu0c");
    static aBFu8s_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0c(Test_aBFu8s_L_BFu0c, "aBFu8s_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0i()
{
  {
    init_simple_test("aBFu8s_L_BFu0i");
    static aBFu8s_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0i(Test_aBFu8s_L_BFu0i, "aBFu8s_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0ll()
{
  {
    init_simple_test("aBFu8s_L_BFu0ll");
    static aBFu8s_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0ll(Test_aBFu8s_L_BFu0ll, "aBFu8s_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0s()
{
  {
    init_simple_test("aBFu8s_L_BFu0s");
    static aBFu8s_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0s(Test_aBFu8s_L_BFu0s, "aBFu8s_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0c()
{
  {
    init_simple_test("aBFu8s_S_BFu0c");
    static aBFu8s_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0c(Test_aBFu8s_S_BFu0c, "aBFu8s_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0i()
{
  {
    init_simple_test("aBFu8s_S_BFu0i");
    static aBFu8s_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0i(Test_aBFu8s_S_BFu0i, "aBFu8s_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0ll()
{
  {
    init_simple_test("aBFu8s_S_BFu0ll");
    static aBFu8s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0ll(Test_aBFu8s_S_BFu0ll, "aBFu8s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0s()
{
  {
    init_simple_test("aBFu8s_S_BFu0s");
    static aBFu8s_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0s(Test_aBFu8s_S_BFu0s, "aBFu8s_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0c");
    static aBFu8s_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0c(Test_aBFu8s_Uc_BFu0c, "aBFu8s_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0i");
    static aBFu8s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0i(Test_aBFu8s_Uc_BFu0i, "aBFu8s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0ll");
    static aBFu8s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0ll(Test_aBFu8s_Uc_BFu0ll, "aBFu8s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0s");
    static aBFu8s_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0s(Test_aBFu8s_Uc_BFu0s, "aBFu8s_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

